实体框架中的外键级联路径

时间:2014-05-15 08:33:25

标签: entity-framework

  

“在表'AttendanceSheets'上引入FOREIGN KEY约束'FK_dbo.AttendanceSheets_dbo.AdulLiteracyTeachers_ALTName'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。\ r \ nCould不创建约束。请参阅先前的错误。“}

public class AttendanceSheet
    {
        [Required]
        [Key]
        public int Attendanceid { get; set; }
        [DisplayName("District")]
        [ForeignKey("District")]
        public int DistID { get; set; }

        public virtual District District { get; set; }
        [DisplayName("District")]

        [ForeignKey("AdulLiteracyTeachers")]
        public int ALTName { get; set; }
        public virtual AdulLiteracyTeachers AdulLiteracyTeachers { get; set; }

        [DisplayName("Month")]
        public int Month { get; set; }
        [DisplayName("Number Of Days")]
        public int Attandence { get; set; }
    }

在使用实体框架添加控制器时出现上述错误。目的是为了获得奖励,我想要整个教师名单。我正在使用教师名称的foriegn键

1 个答案:

答案 0 :(得分:0)

在您的数据上下文文件中添加

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

}

下面你定义了DbSet。

当有多个路径通过外键从另一个实体上删除时会发生这种情况。

例如

EntityA - EntityB - EntityC - EntityD
EntityA - EntityC - EntityD
EntityA - EntityD

有多个路径可以删除相关的EntityD,sql server不允许这样做。