ADO.net Entity One Relationship всегда возвращает ноль - PullRequest
0 голосов
/ 06 августа 2009

Я настроил 4 отдельные таблицы, которые имеют отношения fk между всеми ними. Основная проблема у меня между таблицами EmployeeQuestions и Questions. Я использую Entity для моделирования объектов. Когда я получаю свой объект EmployeeQuestions, я проверяю его, чтобы убедиться, что связь между EmployeeQuestions и Employee существует, и я могу получить всю информацию через эти отношения, однако связь между EmployeeQuestions и Questions всегда равна нулю. Я проверил, чтобы убедиться, что отношения были настроены правильно, и это так. Также я попытался выполнить поиск по списку всех EmployeeQuestions, и я могу запросить эти результаты для QuestionID в таблице вопросов, однако не могу получить поле описания.

Я совсем новичок в работе с базами данных, любая помощь будет высоко ценится.

Спасибо.

1 Ответ

1 голос
/ 06 августа 2009

Можете ли вы показать нам используемый вами запрос?

По умолчанию Entity Framework не пересекает ассоциации, чтобы захватить объекты "на другом конце" ассоциации - вам придется сделать это явно.

var emps = from e in ObjectContext.Employees 
           where (some condition)
           select e;

В этом случае ваша ассоциация «Employee.Questions» (при условии, что она называется так) всегда будет NULL - по замыслу.

Вы можете указать «Включить» в свой запрос:

var emps = from e in ObjectContext.Employees.Include("Questions") 
           where (some condition)
           select e;

и теперь в этом случае при извлечении сотрудника также будут загружаться связанные «Вопросы».

Или вы можете сделать:

var emps = from e in ObjectContext.Employees 
           where (some condition)
           select e;

foreach(Employee e1 in emps)
{
  if(!e1.QuestionReference.IsLoaded)
  {
     e1.QuestionReference.Load();
  }
}

явно и в коде загружать связанные объекты.

Поскольку многие люди расценили это как недостаток, в EFv4 будет возможность включить эту автоматическую «отложенную» загрузку, но опять же, вы должны сделать это явно и сознательно.

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...