EF Core& amp;中所需的外键sqlite不适用于long类型

时间:2017-06-01 14:22:02

标签: c# sqlite entity-framework-core foreign-key-relationship

我首先使用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真正需要关系?

0 个答案:

没有答案