EF Database First с наследованием TPT создает DbSet‹T› только для базовых классов.

У меня есть модель EF6.1 EDMX (Database First), и я использую наследование TPT для нескольких типов (например, Employee: Person), однако в сгенерированном классе Model.Context.cs у меня есть только классы DbSet<T> для моих базовых типов, а не для наследования. . Есть ли что-то, что нужно (или можно) сделать для модели EDMX или шаблонов T4, чтобы также сгенерировать DbSet<T> для наследуемых классов?


person Vesselin Obreshkov    schedule 09.04.2014    source источник


Ответы (1)


Вы можете получить подтипы из контекста с помощью

context.People.OfType<Employee>()

или вы можете расширить контекст с помощью частичного класса, в котором вы определяете свойства для подтипов DbSet:

partial class Context
{
    public DbSet<Employee> Employees { get; set; }
}

Это намного проще, чем изменение шаблона t4, потому что стандартные шаблоны t4 могут измениться в будущих выпусках, поэтому вам придется изменить их снова.

person Gert Arnold    schedule 09.04.2014
comment
Не думал о реализации частичного класса. Большое тебе спасибо. - person Vesselin Obreshkov; 10.04.2014