EF Query, чтобы получить объединение всех детских коллекций - PullRequest
2 голосов
/ 13 февраля 2012

Предполагая, что у меня есть класс Entity Framework 4.2, подобный этому:

class Company
{
    public int ID { get; set; }
    public ICollection<Employee> Employees { get; set; }
}

И у меня есть такая коллекция:

public ICollection<Company> Companies { get; set; }

Какой эффективный способ создать список всех сотрудников во всей коллекции Companies? Мне не нужно беспокоиться о дубликатах.

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

1 Ответ

0 голосов
/ 13 февраля 2012

Я не уверен, что вы пытаетесь достичь, но для запроса данных вы хотите использовать DbContext.

Вы можете настроить свой контекст для автоматической загрузки связанных сущностей с помощьюустановив LazyLoadingEnabled в true или явно, т.е. при запросе данных, включите путь к сотрудникам, используя расширение Include, предоставленное с EF> 4.0.

Как только появятся все компании, вы можете подключить его, используя метод SelectMany.Я не проверял, но AFAIK, LINQ to SQL выполнит запрос как одну связку по требованию.

Если вы настаиваете на том, чтобы не показывать свой DbContext, или если вы используете другой базовый контекст, я бы посоветовал вамоберните его в репозиторий, который стоит за SelectMany с тех пор, но ваш друг Include и SelectMany.

...