我对EntityFramework Core迁移存在问题,该迁移包括抽象类。
主要数据库结构包含一个抽象基类和一个子类,该子类从其自己的基类继承,基本上每个表一个基类和一个子类。在类型配置中,我仅配置子类,并使用builder.Ignore<BaseClass>()
从模型中排除基类。我需要忽略,因为EF Core也想映射基类,并且我想使用忽略方法来排除基类。
当我在基类上使用[NotMapped]
属性时,迁移成功,但是当我使用Ignore()
时,模型构建器只是想映射基类,就像我没有调用{{ 1}}。
比方说,DBSet现在包含Ignore()
,它继承自Test
TestBase
public virtual DbSet<Test> Test { get; set; }
迁移因与基类相关的错误而失败,因此我认为EF Core也希望映射基类型,因为如果在protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
modelBuilder.ApplyConfigurationsFromAssembly(assembly);
modelBuilder.Ignore<TestBase>();
base.OnModelCreating(modelBuilder);
}
上使用[NotMapped]
,则迁移有效。我之所以不能使用TestBase
的主要原因,是因为我也需要EF生成的数据库中的基类,并且通过EF,子类继承了NotMapped
属性
感谢您的帮助!