一对零或一对一关系 entity framework
One to zero or one relationship entity framework
我正在尝试使用代码 first/fluent api 强制执行一对(零或一)table 关系,预期的 table 如下所示。
学生可能只有一个联系人(StudentContact)或没有
但是每个联系人 (StudentContact) 都必须有一个 Student
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 列可能包含重复值。
配置一对一关系时,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; }
}
我正在尝试使用代码 first/fluent api 强制执行一对(零或一)table 关系,预期的 table 如下所示。
学生可能只有一个联系人(StudentContact)或没有 但是每个联系人 (StudentContact) 都必须有一个 Student
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 列可能包含重复值。
配置一对一关系时,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; }
}