這是由於EF外鍵引發的序列化問題。spa
解決方案:線程
context.Configuration.ProxyCreationEnabled = false;
這裏我用的是一個基類控制器用於被繼承 返回EF實例前加上這段代碼就能夠了code
1 //用於被繼承 2 public class BaseController : Controller 3 { 4 public CucuCarEntity db 5 { 6 get 7 { 8 //從當前線程中獲取該對象 9 CucuCarEntity db = CallContext.GetData("DB") as CucuCarEntity; 10 //判斷該對象是否爲空 11 if (db == null) 12 { 13 //空的話就實例該對象 14 db = new CucuCarEntity(); 15 //賦值 16 CallContext.SetData("DB", db); 17 } 18 //序列化類型爲「System.Data.Entity.DynamicProxies.ActionInfo_」的對象時檢測到循環引用。 加上這個就OK了 19 db.Configuration.ProxyCreationEnabled = false; 20 //返回 21 return db; 22 } 23 } 24 }
加粗標黃那句代碼就能夠解決這個Bug對象
我還發現這個循環引用,是EF在根據實體映射的時候,在構造方法中建立新的實例,實例之間循環引用了。能夠把相應的實例註釋掉,就可使用EF的懶加載了。blog