2012-12-31 34 views
0

我得到以下异常:避免循环或多个级联路径

enter image description here

我经历了很多帖子hereherehere不见了。但是没有一篇文章提出了适当的解决方案。我想知道这种情况怎样才能切实解决。

ModelsContexts如下:

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"); 
     } 
+0

希望你的'学生'表看起来像?你有触发器还是简单地级联删除/更新表? –

+0

@GustavKlimt我首先使用实体​​框架模型。我的模型如上所述,到目前为止没有触发器 –

回答

0

我曾问这个问题有时候会回来。这应该会帮助你。

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

参考阅读的文章中寻找的主要部分是 “什么是多级联通路反正?

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

0

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