相同类的不同EntityTypeConfiguration映射

时间:2011-08-03 19:20:38

标签: c# .net entity-framework-4.1

我有两个实体使用相同的类来表示名称:

参与者

class Participant
{
  public PersonName Name { get; set; }
}

法官

class Judge
{
  public PersonName Name { get; set; }
}

PERSONNAME

class PersonName
{
  public string First { get; set; }
  public string Last { get; set; }
  public string Full { get; set; }
}

Participant的表中,Last值是必需(非空)列。在Judge的表中,仅使用Full值(和可选)。我的问题是EF正在将我的Participant映射中的IsRequired()应用于Judge PersonName Full实例,因此只为{{1}提供了Judge值时失败了实体。

参与者制图

Property(t => t.Name.Last)
  .IsRequired();

法官制图

Property(t => t.Name.Full)
  .HasMaxLength(100);

实体验证错误

  

需要Judge.Name.Last字段。

除了为每种映射情况创建单独的PersonName类之外,有没有办法避免这种映射冲突?

1 个答案:

答案 0 :(得分:0)

如果Judge仅使用部分PersonName值,为什么要避免使用单独的课程?法官的名字是另一类。

复杂类型映射的存储相关部分在使用该类型的实体之间共享。