使用实体框架 6(Fluent API)的可选一对多关系

问题描述 投票:0回答:1

在实体框架 6 中我们可以有可选的一对多关系吗?

看下面的Department和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);

结果应该是这样的。

Id              Name            DepartmentId

1               John            x
2               Ahmad           y
3               Persony         NULL
4               Personz         x

从上面的例子可以看出,有些人有部门,有些人没有,部门有一个人员列表。

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

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

entity-framework entity-framework-6 entity .net-4.8 ef-fluent-api
1个回答
3
投票

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

在您的

Person
班级变更中:

public int DepartmentId

public int? DepartmentId

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

© www.soinside.com 2019 - 2024. All rights reserved.