序列化類型爲「System.Data.Entity.DynamicProxies..."對象時檢測到循環引用

 

這是由於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

相關文章
相關標籤/搜索