EF 4.3.1如何使用每种类型的表映射子子类

时间:2012-06-22 00:00:48

标签: c# entity-framework-4.3

我有一个名为Party的抽象基类。有几个具体的子类(公司,人,部门)。 Party有一个名为PartyType的属性,用作鉴别器。每种类型都在自己的表中,其配置如

Map<Person>(p => p.Requires("PartyType").HasValue("Person").ToTable("People");

一切都运作良好。 现在我想添加一个名为Employee的Person的子类。我该如何映射?我试过了

Map<Employee>(e => e.Requires("PartyType").HasValue("Employee")
   .ToTable("Employees");

但这会产生运行时错误

  

(43,10):错误3032:从行开始映射片段时出现问题   43,44:EntityTypes WOL.EFData.Person,WOL.EFData.Employee正在   映射到表People中的相同行。映射条件可以   用于区分这些类型映射到的行。

1 个答案:

答案 0 :(得分:1)

在每种类型的表中,EF不期望使用鉴别器配置。

modelBuilder.Entity<Person>().ToTable("People");
modelBuilder.Entity<Employee>().ToTable("Employees");

有关详细信息,请参阅this article