在实体框架中使用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。
我知道为什么会这样...但是我认为迁移可以解决这个问题。
有人知道如何处理吗?谢谢!