在一个表中映射泛型类型的所有派生类型



>我有一个关于EF Core 2.1的问题

我有一个基类型,我们把它命名为 CustomerCustomerOldCustomerNew都是从中派生出来的。这些会自动存储在一个表中,到目前为止一切顺利。

现在我有一个用于将Customer映射到Product的泛型类型:

public class CustomerToProduct<T> where T : Customer 
{ 
    public int CustomerId { get; set; }
    public T Customer { get; set; }
    public int ProductId { get; set; }
    public Product Product { get; set; }
    ...
}

派生的CustomerToProduct类型没有特定的属性。我只想使用它们,例如我通过属性访问的客户CustomerToProduct.Customer是派生类型。

我在DbContext中为派生类型定义了 DbSets,如下所示,这当然会导致单独的表:

public class MyDbContext : DbContext 
{
    public DbSet<OldCustomerToProduct> OldCustomerToProducts { get; set; }
    public DbSet<NewCustomerToProduct> NewCustomerToProducts { get; set; }
    ...
}

如何将所有派生的CustomerToProduct<T>类型存储在同一表中?如何定义DbSets<>

你的看起来

是一个很好的映射模式TPH(每个层次结构的类型(的候选日期。您可以在此处阅读有关该主题的更多信息。

最新更新