entity framework中的可选一对多关系
我在解决可选的一对多关系问题时遇到了问题。
我的模型是:
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 Members { get; set; } }
我想为一个Person
分配零个或一个Department
。 分配后, Person
应显示在Department
的Members
-List中。
我正在使用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);
但是我用这两种方法得到了例外:
无法确定类型“人”和“部门”之间关联的主要结束。 必须使用关系流畅API或数据注释显式配置此关联的主要结尾。
当同时配置这两个时,我得到:
在“Person”类型上声明的导航属性“Department”已配置了冲突的多重性。
对于另一个实体类型使用与Person
相同的配置,但该实体类型引用自身。
如何正确配置这种关系?
你可以试试这个:
this.HasOptional(s => s.Department) .WithMany(s => s.Members) .HasForeignKey(s => s.MemberOfDepartment);
modelBuilder.Entity()。HasMany(x => x.MemberOfDepartment).WithOptional();