Code First CTP4 for EF4 - 如何将多个实体(公共基础)映射到单个表

时间:2010-08-31 21:51:30

标签: entity-framework entity-framework-4 ef4-code-only

我有一个大表,我想映射到几个实体。

假设表格如下:Thing(ThingId,Property1 ... Property20)

现在我有了我的实体:

public abstract class ThingBase
{
    public int ThingId { get; set; }
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}

public class ThingSummary : ThingBase
{
    public string Property3 { get; set; }    
}

public class Thing : ThingBase
{
    public string Property3 { get; set; }
    //...
    public string Property20 { get; set; }
}

如何设置我的DbContext以使其有效?我有:

public DbSet<ThingSummary> ThingSummaries { get; set; }

public DbSet<Thing> Things { get; set; }

但是我收到错误“无效的对象名称'dbo.ThingSummaries'。”当我尝试查询时。

我尝试过添加OnModelCreating:

modelBuilder.Entity<ThingSummary>().MapSingleType().ToTable("Things");

但这似乎没有做任何事情。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为你不能拥有ThingSummaries。你只能拥有东西。您也不能使用MapSingleType,因为它表示只有单一类型将映射到表。您必须使用MapHiearchy。我在此question中发布了此类映射的示例。