在实体框架 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”。
问题是您的型号和配置不匹配。在 Fluent API 中,您将依赖项的外键配置为可选,但在您的模型中,外键是必需的:
在您的
Person
班级变更中:
public int DepartmentId
到
public int? DepartmentId
这样可以确保外键在数据库中实际上可以具有值“NULL”。