使用 entity framework 的可选一对多关系(流畅 Api)

Optional One to many Relationship using entity framework (fluent Api)

我们可以在 entity framework

中有可选的一对多关系吗

看下面类部门和人员

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);

结果应该是这样的。

身份证姓名DepartmentId

1 约翰 x

2 艾哈迈德

3 个人 NULL

4 人 x

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

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

多重性与角色中的引用约束冲突 由于 Dependent Role 中的所有属性都不可为 null,因此 Principal Role 的重数必须为“1”。

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

在你的 Person class 中更改:

public int DepartmentId

public int? DepartmentId

这样可以确保外键在数据库中的实际值为 'NULL'。