在 MSDN 中,他们展示了如何通过以下示例实现 EF TPT:
public abstract class BillingDetail
{
public int BillingDetailId { get; set; }
public string Owner { get; set; }
public string Number { get; set; }
}
[Table("BankAccounts")]
public class BankAccount : BillingDetail
{
public string BankName { get; set; }
public string Swift { get; set; }
}
[Table("CreditCards")]
public class CreditCard : BillingDetail
{
public int CardType { get; set; }
public string ExpiryMonth { get; set; }
public string ExpiryYear { get; set; }
}
public class InheritanceMappingContext : DbContext
{
public DbSet<BillingDetail> BillingDetails { get; set; }
}
关于(*)我有这个问题:
我可以在层次结构中为每个孩子拥有一个 DbSet 吗?IE:
public class InheritanceMappingContext : DbContext
{
public DbSet<BankAccount> BankAccount { get; set; }
public DbSet<CreditCard> CreditCards{ get; set; }
}
我问这个是因为我想要一个主要的父类,所有其他类都从中继承,即:
public abstract class DatabaseItem
{
[Key]
public long DatabaseItemId { get; set; }
}
public User : DatabaseItem
{
...
}
public Picture : DatabaseItem
{
...
}
public Gallery : DatabaseItem
{
...
}
因此,给定一个 ID,我知道它只对应一件事。
过去在其他项目中我没有这样做,并且使用了特定的 ID:“UserId”、“PictureId”、“GalleryId”。
在这种情况下,我将只有一个 DbSet?
DbSet<DatabaseItem> DatabaseItems