【问题标题】:Avoid cycles or multiple cascade paths避免循环或多个级联路径
【发布时间】:2012-12-31 08:53:59
【问题描述】:

我收到以下异常:

我浏览过很多帖子here、here 和here。但没有帖子建议问题的适当解决方案。我想知道如何实际解决这种情况。

我的Models和Contexts如下:

public class Context : DbContext
    {
        public Context() : base("DefaultConnection")
        {
        }
        public DbSet<Student> Students { get; set; }
        public DbSet<Course> Courses { get; set; }
        public DbSet<Staff> Staffs { get; set; }
    }

public class Student
    {
        public int StudentId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        [Required]
        public virtual Course Course { get; set; }
        [Required]
        public virtual Staff Staff { get; set; }

    }


 public class Staff
       {
           public int StaffId { get; set; }
           public string Name { get; set; }
           public string  Contact { get; set; }
       }


public class Course
    {
        public int CourseId { get; set; }
        public string CourseName { get; set; }
        [Required]
        public virtual Staff Staff { get; set; }
    }

我遇到了这个异常:

 context.Students.Add(student);

以下代码:

 public void AddStudent()
        {
            Student student = new Student();
            student.FirstName = "Bruce";
            student.LastName = "Wayne";
            student.Course = new Course();
            student.Course.CourseName = "CSE";
            student.Course.Staff = new Staff();
            student.Course.Staff.Name = "Albert";
            student.Course.Staff.Contact = "1234567890";
            context.Students.Add(student);
            context.Courses.Add(student.Course);
            context.SaveChanges();
            Console.WriteLine("Student , Course, Staff Added");
        }

【问题讨论】:

  • 你的“学生”桌长什么样?您是否有触发器或只是对表进行级联删除/更新?
  • @GustavKlimt 我首先使用实体​​框架模型。我的模型如上图所示,目前没有触发器

标签: c# sql-server entity-framework ef-code-first


【解决方案1】:

前段时间我问过这个问题。这应该可以帮助您。

EF Code First giving problems in foreign keys

参考阅读这里

http://weblogs.asp.net/manavi/archive/2011/05/01/associations-in-ef-4-1-code-first-part-5-one-to-one-foreign-key-associations.aspx

在文章中寻找的主要部分是“什么是多级联路径?”

要实际解决该问题,您需要确定要打开级联删除的路径。例如如果员工被删除,课程是否也会被删除或保留?

【讨论】:

    【解决方案2】:

    Disabling cascading deletes 该实体应该可以解决您的问题。如果您想要对这组实体进行级联删除,请手动执行。它不能自动完成,因为当有一个循环时,无法确定何时停止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2018-08-10
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 2016-03-26
      相关资源
      最近更新 更多