У меня есть два объекта в моем проекте Student
и Teacher
, которые имеют общий базовый класс, AccountModel
. Базовый класс содержит свойства, которые необходимы как для студентов и преподавателей (семантически, и студенты, и преподаватели являются владельцами счетов, и для хорошей практики, это предотвращает нарушение DRY принципа)Fluent API Table Scaffolding - HasBaseType
В моем Fluent API конфигурации у меня есть :
builder
.Ignore<AccountModel>();
builder
.Entity<Student>()
.HasBaseType<AccountModel>()
.ToTable("Students");
builder
.Entity<Teacher>()
.HasBaseType<AccountModel>()
.ToTable("Teachers");
но когда EF каркасы миграции и создает новую базу данных, я получаю AccountModel
таблицу, но не таблица Students
или Teachers
. Что дает?
В соответствии с [документацией] (https://docs.microsoft.com/en-us/ef/core/modeling/relational/inheritance), в настоящее время EF Core поддерживает только шаблон TPH, поэтому вы получаете таблицу базы данных. Я понятия не имею, в чем цель 'HasBaseType'. –
@IvanStoev, что такое шаблон TPH? – series0ne
Отдельная таблица, содержащая все поля потомков плюс столбец «дискриминатор» :) –