2009-10-02 2 views
0

Я получаю эту ошибку, когда пытаюсь сделать вставку в столбце, который является внешним ключом. Вот как я задаю значениеEntitySQL - ссылка на объект не установлена ​​в экземпляр объекта

var at = MvcApplication1.Entity.alttitles.Createalttitles(0, altTitleText); 
     at.question.question_id = questionid; //Error here 
     at.userinfo.user_userid = _AuthorID; //Error here 
     context.AddToalttitles(at); 
     res = context.SaveChanges(); 

Когда я сделал question_id и идентификатор внешнего ключа я начал получать эту ошибку. Есть ли способ исправить это?

ответ

1

Скорее всего, «вопрос» является ссылкой на объект, не так ли? Те не включены по умолчанию в запросе - вам нужно конкретно либо включить их в своем первом запросе

var at = MvcApplication1.Entity.alttitles 
       .Createalttitles(0, altTitleText) 
       .Include("question"); 

Является ли «вопрос» 1: 1 или 1: п навигационной собственности? В 1: при п, вы можете проверить «вопрос» собственность непосредственно:

if(!at.question.IsLoaded) 
{ 
    at.question.Load(); 

    .... 
} 

В 1: случай собственности 1 навигации, вы, вероятно, имеют свойство «QuestionReference», а также:

if(!at.QuestionReference.IsLoaded) 
{ 
    at.QuestionReference.Load(); 

    .... 
} 

Marc

+0

Ваши примеры обратные. «Ссылка» - 1: 1. –

+0

oops - спасибо, что указали это! Не использовали его много в последнее время (ожидая EF4), поэтому моя память начинает проскальзывать :-) –

+0

Createalttitles - это функция sql create объекта для вставки новых строк в базу данных. У него нет опции Include в intelisense – user161433

0

Проверьте, не имеет ли значение at значение null перед присвоением его свойств?

Смежные вопросы