LINQ to Entities, как вернуть все записи из родительской таблицы? - PullRequest
1 голос
/ 11 февраля 2009

Я не могу выбрать все записи из родительской таблицы, используя Linq to Entities.

Это простой дизайн БД (изображение ниже):

Ссылка на изображение (Мертвая ссылка)

Это точный вывод, который я хочу использовать, используя Linq to Entities или Linq to SQL (изображение ниже):

Ссылка на изображение (Мертвая ссылка)

Когда я использую Linq to Entities или Linq To Sql, я могу получить записи только из дочерней таблицы, имеющей отношение внешнего ключа. Я не могу получить нулевые значения, как показано выше.

Я хочу, чтобы нулевые значения отображались так же, как при использовании left outer join.

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 11 февраля 2009
from entity in MyContext.EntityType.Include("ChildEntitiesNavigationPropertyName")
select entity;

Возвращает все экземпляры EntityType, а также ChildEntitiesNavigationPropertyName, когда / если он существует. Для табличной формы используйте анонимный тип:

from entity in MyContext.EntityType.Include("ChildEntitiesNavigationPropertyName")
select new {ParentProperty = entity.ParentProperty, 
            ChildProperty  = entity.ChildEntitiesNavigationPropertyName.ChildProperty};

Для объекта 1 .. *:

from entity in MyContext.EntityType.Include("ChildEntitiesNavigationPropertyName")
from child in entity.ChildEntitiesNavigationPropertyName.DefaultIfEmpty()
select new {ParentProperty = entity.ParentProperty, 
            ChildProperty  = child.ChildProperty};
0 голосов
/ 13 февраля 2009

Я почти уверен, что вы можете выбрать одного из сотрудников, а затем выполнить левое объединение в LINQ, что-то вроде этого (у меня нет VS на этом компьютере):

var results = from e in dbContext.Employees join s in dbContext.Sales on e.EmployeeID equals s.EmployeeID select new { e, s };

Вы можете выбрать столбцы, которые вы просто хотите. Надеюсь, это даст вам результаты, которые вы хотите.

...