使用实体框架(流利的Api)的可选一对多关系

时间:2018-09-10 04:54:47

标签: entity-framework entity ef-fluent-api

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

看以下几类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”。

1 个答案:

答案 0 :(得分:1)

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

在您的Person班级变更中:

public int DepartmentId

public int? DepartmentId

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