EF TPT继承:每个孩子一个DbSet?

时间:2014-07-06 18:40:04

标签: entity-framework table-per-type dbset

在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吗?即:

    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:&#34; UserId&#34;,&#34; PictureId&#34;,&#34; GalleryId&#34;。

在这种情况下,我将只有一个DbSet?

   DbSet<DatabaseItem> DatabaseItems

0 个答案:

没有答案