我有两个实体使用相同的类来表示名称:
参与者
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
类之外,有没有办法避免这种映射冲突?
答案 0 :(得分:0)
如果Judge
仅使用部分PersonName
值,为什么要避免使用单独的课程?法官的名字是另一类。
复杂类型映射的存储相关部分在使用该类型的实体之间共享。