【发布时间】:2018-08-08 14:15:06
【问题描述】:
大师们的快速问题。
我有 2 个 EF 模型类:
public class School
{
public int Id { get; set; }
[DisplayName("School")]
public string Name { get; set; }
public List<Teacher> Teachers { get; set; }
public List<Note> Notes { get; set; }
}
public class Teacher
{
public int Id { get; set; }
[DisplayName("Öğretmen")]
public string Name { get; set; }
public int SchoolId { get; set; }
public School School { get; set; }
public List<Note> Notes { get; set; }
}
基本上我想在代码优先中创建一对多关系。
但是当我尝试这样做时,我得到了这个错误:
在表“Teachers”上引入 FOREIGN KEY 约束“FK_dbo.Teachers_dbo.Schools_SchoolId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
我在哪里做错了?
编辑
public class Note
{
public int Id { get; set; }
[Required,DisplayName("Başlık"), StringLength(50)]
public string Title { get; set; }
[Required,DisplayName("Açıklama"), StringLength(4000)]
public string Description { get; set; }
public string File { get; set; }
public DateTime UploadDate { get; set; }
public bool IsApproved { get; set; }
public int SchoolId { get; set; }
public int OwnerId { get; set; }
public int TeacherId { get; set; }
//Keys
public School School { get; set; }
public Teacher Teacher { get; set; }
public List<Comment> Comments { get; set; }
}
我没有收到此模型和密钥的任何错误..
【问题讨论】:
-
什么时候收到异常?在添加迁移?插入数据?你能提供更多的代码吗?看看:Configure ont-to-many relationships in code first
-
@ChW 我只是运行我为创建数据库而创建的数据初始化程序。
-
@ChW 顺便说一句,当我将
public int? SchoolId { get; set; }schoolId 设置为可为空时,错误就消失了。 -
好吧,可以为空的外键会为你解决这个问题。然后检查您的 ON DELETE 操作,就像异常告诉您的那样。我无法重现您的异常。对我来说,上面的代码一切正常。是否涉及其他模型或您只有这两个?
-
删除 Note 与 School 的关系,反之亦然。您可以通过与笔记有关系的老师来获取学校。
标签: c# asp.net-mvc entity-framework ef-code-first