У меня проблема с миграцией EntityFramework Core, в которую входят абстрактные классы.
Основная структура базы данных содержит абстрактный базовый класс и дочерний класс, который наследует от своего собственного базового класса, в основном один базовый класс и один дочерний класс на таблицу.В конфигурациях типов я настраиваю только дочерние классы и использую builder.Ignore<BaseClass>()
для исключения базовых классов из модели.Мне нужно игнорировать, потому что EF Core также хочет отобразить базовые классы, и я хочу использовать метод Ignore для исключения базовых классов.
Когда я использую атрибут [NotMapped]
в базовых классах, успешность миграции, но когда я использую Ignore()
, сборщик моделей просто хочет отобразить базовые классы, как я не называл Ignore()
.
Скажем, DBSet на данный момент содержит Test
, который наследуетс TestBase
public virtual DbSet<Test> Test { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
modelBuilder.ApplyConfigurationsFromAssembly(assembly);
modelBuilder.Ignore<TestBase>();
base.OnModelCreating(modelBuilder);
}
Ошибка миграции с ошибками, связанными с базовым классом, поэтому я думаю, что EF Core также хочет отобразить базовый тип, потому что, если я использую [NotMapped]
на TestBase
,миграция работает.Основная причина, по которой я не могу использовать NotMapped
, потому что мне нужны базовые классы и в сгенерированной EF базе данных, а с EF дочерние классы наследуют атрибут [NotMapped]
Спасибо за помощь!