【发布时间】:2018-08-08 18:19:59
【问题描述】:
我正在使用带有 Code First 方法的 Entity Framework Core,但在尝试启动应用程序时收到以下错误:
System.Data.SqlClient.SqlException: '引入外键 表 'Grades' 上的约束 'FK_Grades_Students_StudentId' 可能会导致 循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。不能 创建约束或索引。查看以前的错误。'
我的实体:
public class Student
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public Group Group { get; set; }
public IEnumerable<Subject> Subjects { get; set; } = new List<Subject>();
}
public class Subject
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string Name { get; set; }
public IEnumerable<Grade> Grades { get; set; } = new List<Grade>();
[ForeignKey("StudentId")]
public Student Student { get; set; }
public Guid StudentId { get; set; }
}
public class Grade
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public double Value { get; set; }
public DateTime DateOfGettingGrade { get; set; }
[ForeignKey("SubjectId")]
public Subject Subject { get; set; }
public Guid SubjectId { get; set; }
[ForeignKey("StudentId")]
public Student Student { get; set; }
public Guid StudentId { get; set; }
}
modelBuilder.Entity("GradeBook.Core.Models.Grade", b =>
{
b.HasOne("GradeBook.Core.Models.Student", "Student")
.WithMany()
.HasForeignKey("StudentId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("GradeBook.Core.Models.Subject", "Subject")
.WithMany("Grades")
.HasForeignKey("SubjectId")
.OnDelete(DeleteBehavior.Cascade);
});
【问题讨论】:
标签: c# entity-framework entity-framework-core