我们可以在实体框架中建立可选的一对多关系吗?
看以下几类Department and 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名称DepartmentId
1约翰x
2 Ahmad y
3 Persony NULL
4 Personz x
从上例中可以看到,有些人有部门,有些人没有部门 和部门都有人员名单。
现在,这给了我一个错误。像这样
多重性与Role中的引用约束冲突 由于“从属角色”中的所有属性都是不可为空的,因此“主体角色”的多重性必须为“ 1”。
答案 0 :(得分:1)
问题是您的型号和配置不匹配。在fluent API中,您将依赖项的外键配置为可选,但在模型中,外键是必需的:
在您的Person
班级变更中:
public int DepartmentId
到
public int? DepartmentId
这样,您可以确保外键在数据库中实际上可以具有值'NULL'。