2017-05-29 53 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字段。