我首先使用Entity Framework Core代码来处理这两个相关的表:
public class Teacher
{
[Key]
public long Id { get; set; }
}
public class Student
{
[Key]
public long Id { get; set; }
[Required]
public long TeacherId { get; set; }
public Teacher Teacher { get; set; }
}
在空数据库中,以下插入将失败并显示SQLite Error 19: 'FOREIGN KEY constraint failed'
,因为没有ID为123456的教师:
var student = new Student();
student.TeacherId = 123456;
dbcontext.Add(student);
dbcontext.SaveChanges();
我希望以下内容也会失败,但它不会引发错误。相反,它会添加一个没有关系的学生:
var student = new Student();
student.TeacherId = 0; // why is this allowed??
dbcontext.Add(student);
dbcontext.SaveChanges();
由于没有ID为0的教师,我希望第二个代码示例也失败。我认为[require]
会让EF core / sqlite真正需要关系,并且很惊讶为什么添加带有外键0的学生不会抛出错误。
如何让ef core / sqlite真正需要关系?