【发布时间】:2016-05-20 12:26:43
【问题描述】:
我这里有两个模型:
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 语句,但我得到一个错误:
在表“Evaluations”上引入 FOREIGN KEY 约束“FK_dbo.Evaluations_dbo.Students_TargetId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
这里的“循环或多级联路径”在哪里?
【问题讨论】:
-
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();下面base.OnModelCreating...怎么样
标签: asp.net-mvc database entity-framework