0

在实体框架中使用 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。

我理解为什么会发生这种情况......但我认为迁移会处理这个问题。

有谁知道如何处理这个?谢谢!

4

0 回答 0