使用 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'。
我们可以在 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'。