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应显示在DepartmentMembers -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();