【发布时间】:2015-06-01 02:20:12
【问题描述】:
我在让可选的一对多关系正常工作时遇到问题。
我的模型是:
public class Person
{
public int Identifier { get; set; }
...
public virtual Department Department { get; set; }
}
public class Department
{
public int Identifier { get; set; }
...
public virtual IList<Person> Members { get; set; }
}
我想将零或一个Department 分配给Person。分配后,Person 应显示在Department 的Members 列表中。
我正在使用 Fluent API 配置 Person,如下所示:
HasKey(p => p.Identifier);
HasOptional(p => p.Department).WithMany(d => d.Members);
还通过配置Department而不是Person尝试了另一种方式:
HasMany(d => d.Members).WithOptional(p => p.Department);
但是两种方式我都得到了例外:
无法确定类型“Person”和“Department”之间关联的主体端。此关联的主体端必须使用关系流式 API 或数据注释显式配置。
当同时配置两者时,我得到:
在类型“Person”上声明的导航属性“Department”已配置有冲突的多重性。
对另一种实体类型使用与 Person 相同的配置有效,但是该实体类型引用自身。
如何正确配置这种关系?
【问题讨论】:
-
没关系,我从模型中删除了
ForeignKeyIndexConvention。再次添加后,它起作用了。
标签: c# entity-framework entity-framework-6 ef-fluent-api