我想先學使用VS 2013實體框架6多對多的代碼首先急切加載爲遞歸結果
我在做同樣的事情在這個問題實體框架6碼:How to eagerly load a many to many relationship with the entity framework code first?
使用相同的設置
public class Student
{
public int Id {get;set}
public string FullName {get;set;}
public virtual ICollection<Course> Courses {get;set;}
}
public class Course
{
public int Id {get;set;}
public string FullName {get;set;}
public virtual ICollection<Student> Students {get;set;}
}
而答案
var allStudents = context.Students.Include(s => s.Courses);
但是當調試我得到一個遞歸結果。 每一個學生包含課程的列表,這些課程包含學生的名單,其中包含課程,包含學生等等....
同樣的事情,而無需使用方法.Include(...
var allStudents = context.Students;
我在一家腳手架MVC 5 ApiController會拋出使用此:
System.Runtime.Serialization.SerializationException
卸下Virtual
從模型和仍在使用.Include(...
拋出:對於類型
對象圖「SchoolEF.Models.Course」包含週期 並且如果參考跟蹤被禁止不能被序列化。
我想我還沒有完全理解如何做急切的加載和如何使用.Include()方法。
好的答案,但是ID必須不同意懶惰加載可能是有價值的評論,個人而言,它對人類造成了一場災難,並且導致更多的問題,然後它解決了 – 2015-01-20 23:30:58
我已經更新了可以_could_。我傾向於同意你的觀點,我總是禁用它,但在一些情況下它必須是有用的...... – 2015-01-20 23:43:26
我已經知道我有2個不同的問題,這要歸功於這個答案和建議的[MSDN博客](http ://blogs.msdn.com/b/hongyes/archive/2012/09/04/loop-reference-handling-in-serializer.aspx) 解決方案是禁用LazyLoading並插入'config.Formatters.JsonFormatter.SerializerSettings .ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;'到WebApiConfig.cs – nobee 2015-01-21 00:36:56