2012-12-31 36 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該實體應該解決您的問題。如果您希望對這組實體進行級聯刪除,請手動執行。它不能自動完成,因爲當有一個循環時,無法確定何時停止。