2017-05-29 74 views
0

我想知道如何做到以下幾點: 我有一個基類是這樣的:實體框架更好的表/列數

public class BaseClass 
{ 
    [Key] 
    public Guid Id { get; set; } 

    [MaxLength(512)] 
    public string Description { get; set; } 

    public ICollection<Article> Articles { get; set; } 
} 

然後,我有2類,從基繼承:

public class ClassA : BaseClass 
{ 
    // some properties 
} 

public class ClassB : BaseClass 
{ 
    // some properties 
} 

現在,這產生具有用於每個類別列文章數據庫:ClassB_IdClassA_Id,,...

是不是有辦法讓它產生更少的列/表?因爲當應用程序增長時,它將會有越來越多的這些列,這些列大部分時間都是空的。

我試過了一些映射,但它爲每個類創建了一個單獨的表(比如:ClassAArticles,ClassBArticles,...) 或者抱怨它不能爲2個實體映射相同的列。

+0

什麼是附加屬性的類型/數量;它們會在派生類中共同使用嗎? –

回答

0

在您的上下文中,您可以添加OnModel創建一個Map,定義類由Base生成。

會是這樣的事情。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<BaseClass>() 
     .Map(m => m.ToTable("BaseClass")) 
     .Map<ClassA>(m => m.ToTable("ClassA")) 
     .Map<ClassB>(m => m.ToTable("ClassB")); 
} 

這將產生3個表,其中ClassA和ClassB的將有引用基表的ID字段唯一的ID字段。