在实体框架中使用 TPH 继承时,以下情况下的最佳/良好做法是什么?:
我有
abstract class Base
{
...
}
class Sub1
{
public int Amount {get;set;}
}
和一个DbContext
:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Sub1>();
}
public DbSet<Base> Bases { get; set; }
现在我添加
class Sub2
{
public int Amount { get; set; }
}
和
modelBuilder.Entity<Sub2>();
在添加 Sub2 之前,Sub1.Amount 已映射到 Bases 表中的“Amount”列。添加 Sub2 后,Sub1.Amount 映射到“Sub1_Amount”列,Sub2.Amount 映射到“Amount”列。该表中有数据,因此新的“Sub1_Amount”列全部为空。当我尝试运行系统时,我得到
读取属性“Sub1.Amount”的数据库值时发生异常。预期的类型是“System.Int32”,但实际值为 null。
我理解为什么会发生这种情况......但我认为迁移会处理这个问题。
有谁知道如何处理这个?谢谢!