Entity framework 使用实体框架(fluent Api)的可选一对多关系

Entity framework 使用实体框架(fluent Api)的可选一对多关系,entity-framework,entity,ef-fluent-api,Entity Framework,Entity,Ef Fluent Api,我们可以在实体框架中选择一对多关系吗 看下面的课程部门和人员 public class Person { public int Id{ get; set; } public Department Department { get; set; } public int DepartmentId } public class Department { public int Id{ get; set; } public List<Person>

我们可以在实体框架中选择一对多关系吗

看下面的课程部门和人员

public class Person
{
    public int Id{ get; set; }

    public Department Department { get; set; }
    public int DepartmentId
}

public class Department
{
    public int Id{ get; set; }

    public List<Person> Members { get; set; }
}

Person to Department
.HasOptional(m => m.Department)
.WithOptional( d => d.Members)
.HasForeignKey( m=> m.DepartmentId);
公共类人物
{
公共int Id{get;set;}
公共部门部门{get;set;}
公共int部门ID
}
公共课系
{
公共int Id{get;set;}
公共列表成员{get;set;}
}
人员到部门
.HAS可选(m=>m.Department)
.WithOptional(d=>d.Members)
.HasForeignKey(m=>m.DepartmentId);
结果应该是这样的

Id名称部门Id

1约翰x

2 Ahmad y

3人名无效

4个人x

从上面的例子可以看出,有些人有部门,有些人没有 该部门有一份人员名单

这给了我一个错误。像这样

多重性与角色中的引用约束冲突
由于从属角色中的所有属性都不可为空,因此主体角色的多重性必须为“1”。

问题在于您的模型和配置不匹配。在fluent API中,您将依赖项的外键配置为可选,但在您的模型中,外键是必需的:

在您的
个人
课程更改中:

public int DepartmentId

这样可以确保外键在数据库中实际具有值“NULL”

public int? DepartmentId