我试图使用代码优先/流利的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列可能包含重复值。
在配置一对一关系时,实体框架要求从属(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; }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句