Информация об изменениях

Сообщение Entity Framework: загрузка навигационных свойств наследников от 21.08.2015 15:01

Изменено 21.08.2015 15:35 serber

Имеется примерно следующая структура классов:

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

public class MarketUser : Person
{
    public ICollection<Order> Orders { get; set; }
}

public class AdminUser : Person
{
    public ICollection<Request> Requests { get; set; }
}


Generic метод

public ICollection<TPerson> GetPersons<TPerson>() where TPerson : Person
{
    DbSet personDbSet = GetDbSet<Person>();

    IQueryable<TPerson> personsCollection = personDbSet.OfType<TPerson>()
                                                       .Include("Orders")
                                                       .Include("Requests")
                                                       .ToList();

    return personsCollection;
}


Пример вызова метода

ICollection<Person> persons = GetPersons<Person>();


Вопрос в том, как загрузить навигационные свойства? Сейчас подобная конструкция приводит к возникновению исключения (что вполне логично), т.к. у MarketUser нет свойства Requests, а у AdminUser нет свойства Orders
Entity Framework: загрузка навигационных свойств наследников
Имеется примерно следующая структура классов:

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

public class MarketUser : Person
{
    public ICollection<Order> Orders { get; set; }
}

public class AdminUser : Person
{
    public ICollection<Request> Requests { get; set; }
}


Generic метод

public ICollection<TPerson> GetPersons<TPerson>() where TPerson : Person
{
    DbSet personDbSet = GetDbSet<Person>();

    ICollection<TPerson> personsCollection = personDbSet.OfType<TPerson>()
                                                        .Include("Orders")
                                                        .Include("Requests")
                                                        .ToList();

    return personsCollection;
}


Пример вызова метода

ICollection<Person> persons = GetPersons<Person>();


Вопрос в том, как загрузить навигационные свойства? Сейчас подобная конструкция приводит к возникновению исключения (что вполне логично), т.к. у MarketUser нет свойства Requests, а у AdminUser нет свойства Orders
entity framework .net linq