EF4 Включить () детей для подкласса - PullRequest
1 голос
/ 19 февраля 2011

Для целей этих вопросов давайте предположим, что в моей модели определены эти два объекта -

public class Person
{
    public Guid Id
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }
}

public class Parent : Person
{
    public IEnumerable<Person> Children
    {
        get;
        set;
    }
}

Давайте также предположим, что у меня есть PersonRepository, который загружает всех людей из базы данных.Теперь некоторые люди в базе данных будут родительской сущностью, и поэтому им будут определены дочерние элементы.

Мой вопрос: когда я загружаю список людей из репозитория, можно ли указать Linq включить () дочерние элементы?должен ли кто-либо из них быть Родительской сущностью?

Кстати, отложенная загрузка не будет работать в этом случае, так как репозитории используются на служебном уровне.

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

Джеймс

1 Ответ

1 голос
/ 19 февраля 2011

К сожалению, единственный прямой путь:

 myContext.Persons.OfType<Parent>.Include("Children")...

Проблема этого подхода заключается в том, что он будет загружать только родителей. Таким образом, возможное решение может быть сложным запросом Linq, который будет состоять из двух частей, соединенных .Contcat или .Union.Одна часть будет запрашивать только Персоны, а вторая часть будет запрашивать только Родителей с включенными Детями. Редактировать: Это будет работать только в памяти (IEnumerable), а не в дБ (IQueryable).

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

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