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


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

entity famework+asp.net mvc 做code first項目的時候,前台ajax請求到后台 JsonResult

在后台返回  return Json(list, JsonRequestBehavior.AllowGet)的時候,出錯:

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

解決方法:

  1.可以在查詢的時候這樣子

var list = from f in db.Categories
//這里要select new
select new
{
Id = f.Id,
Name = f.Name,

};

2.你可以嘗試刪除所有導航屬性virtual關鍵字禁用延遲加載創建代理,然后使用預先加載,而不是顯式地加載所需的對象圖

public ActionResult GetAll()
{
return Json(Context.Categories
.Include(o => o.Products)
,
JsonRequestBehavior.AllowGet);
}

看起來像是依賴於延遲加載無論如何,因為你使用virtual屬性延遲加載對象圖,可能會造成現在的系列化的麻煩
3.沒有必要刪除virtual關鍵字導航性能(這將使延遲加載模型完全不可能這足以創建代理以及禁用延遲加載禁用代理擾亂序列一樣具體情況

Context.Configuration.ProxyCreationEnabled = false;

這將禁用僅適用於特定上下文實例Context創建代理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM