0

我正在尝试使用代码优先/流利的 api 来强制执行一对(零或一)表关系,并且预期的表如下。

学生可能只有一个联系人 (StudentContact) 或没有但每个联系人 (StudentContact) 必须有一个学生

StudentID StudentName
1         StudentA
2         StudentB

StudentContactID StudentContact StudentID
1                123456789      1
2                123456789      2

我试着用

EntityName<Student>().HasOptional(x => x.StudentContact).WithRequired(l => l.Student)

但不幸的是,它并没有强制 StudentID 列的一个关系,这意味着 StudentID 列可能包含重复值。

参考:实体框架代码中的一对零/一关系优先

4

1 回答 1

4

在配置一对一关系时,Entity Framework 要求依赖项 ( StudentContact) 的主键也是外键。实现您想要的正确方法可能是这样,但使用数据注释:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public StudentContact StudentContact { get; set; }
}

public class StudentContact
{
    [Key, ForeignKey("Student")]
    public int StudentId { get; set; }
    public int Contact { get; set; }
    public Student Student { get; set; }
}
于 2015-03-03T13:42:13.603 回答