C# 实体框架中可选的一对多关系
我在选择一对多关系时遇到了问题 我的模型是:C# 实体框架中可选的一对多关系,c#,entity-framework,entity-framework-6,ef-fluent-api,C#,Entity Framework,Entity Framework 6,Ef Fluent Api,我在选择一对多关系时遇到了问题 我的模型是: 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&
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; }
}
还尝试了另一种方法,即配置部门
,而不是人员
:
HasMany(d => d.Members).WithOptional(p => p.Department);
然而,在这两种情况下,我都遇到了一个例外:
无法确定类型“Person”和“Department”之间关联的主体端。必须使用关系fluent API或数据注释显式配置此关联的主体端
当同时以这种方式配置两者时,我得到:
在类型“Person”上声明的导航属性“Department”已配置有冲突的多重性
使用与另一个实体类型的Person
相同的配置可以工作,但是该实体类型引用自身
如何正确配置此关系?您可以尝试以下方法:
this.HasOptional(s => s.Department)
.WithMany(s => s.Members)
.HasForeignKey(s => s.MemberOfDepartment);
public class Person
{
public int Identifier { get; set; }
public int DepartmentIdentifier {get; set;}
public virtual Department Department { get; set; }
}
public class Department
{
public int Identifier { get; set; }
public virtual IList<Person> Members { get; set; }
}
modelBuilder.Entity();
也可以尝试以下方法:
this.HasOptional(s => s.Department)
.WithMany(s => s.Members)
.HasForeignKey(s => s.MemberOfDepartment);
public class Person
{
public int Identifier { get; set; }
public int DepartmentIdentifier {get; set;}
public virtual Department Department { get; set; }
}
public class Department
{
public int Identifier { get; set; }
public virtual IList<Person> Members { get; set; }
}
无论如何,我从模型中删除了
ForeignKeyIndexConvention
。再次添加后,它起作用了。它说我想给一个人分配零个或一个部门。
this.HasRequired(p => p.Department).WithMany(d => d.Members).HasForeignKey(p =>
p.DepartmentIdentifier);
this.Property(p => p.DepartmentIdentifier).IsRequired();