0
我來到這裏兩種型號:爲什麼我必須在實體框架中關閉級聯刪除?
public class Student
{
[Key]
public Guid Id { get; set; }
public ApplicationUser User { get; set; }
[Display(Name = "Name"), Required]
public string Name { get; set; }
public ICollection<Assessment> SentAssessment { get; set; }
public ICollection<Assessment> ReceivedAssessment { get; set; }
}
public class Assessment
{
[Key]
public Guid Id { get; set; }
public Student Source { get; set; }
public Student Target { get; set; }
[Display(Name = "Assessment Content")]
public string Content { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Assessment>()
.HasRequired(eval => eval.Source)
.WithMany(stu => stu.SentAssessment)
.Map(conf => conf.MapKey("SourceId"))
.WillCascadeOnDelete();
modelBuilder.Entity<Assessment>()
.HasRequired(eval => eval.Target)
.WithMany(stu => stu.ReceivedAssessment)
.Map(conf => conf.MapKey("TargetId"))
.WillCascadeOnDelete();
}
在這個設計中的用戶(學生)可以給評估等。他或她可以看到他/她給他人的評估和從其他人那裏收到的評估。
在刪除學生時,他/她的所有發送或接收的評估應該被刪除。所以我寫了WillCascadeOnDelete語句,但我得到一個錯誤:
Introducing FOREIGN KEY constraint 'FK_dbo.Evaluations_dbo.Students_TargetId' on table 'Evaluations' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
哪裏「循環或多個級聯路徑」在這裏?
'modelBuilder.Conventions.Remove();'base.OnModelCreating ...''下面''' –
Hackerman