1. 程式人生 > >使用EF主外來鍵關聯迴圈引用報錯

使用EF主外來鍵關聯迴圈引用報錯

錯誤提示

序列化型別 System.Data.Entity.DynamicProxies 的物件時檢測到迴圈引用

解釋報錯原因

 根據我們不同的需要,我們會在不同的時候選擇序列化和反序列化,從而得到我們想要的物件或者字串

返回json資料的時候報錯,報錯的原因是序列化報錯,原因是主外來鍵有相同的欄位,會讀取相同的值,所以迴圈引用報錯

解決報錯方法

1:就是在返回結果集的時候加上這樣一句程式碼

 DBcontext.Configuration.ProxyCreationEnabled = false;   關閉迴圈引用

2 :我就只拿我需要的欄位,不需要的欄位,我就不拿。自己單獨把需要的欄位拿出來 不要全部查詢出來

在另外寫一linq查詢語句就好

 var data = BasicRes.Select(
                p=>new
            {
                p.name,
                p.sex,
                p.idNumber,
                p.receivemode,
                p.myidentity,
                p.position,
                p.oldworkplace,
                p.nowworkplace,
                p.isrecord,
                total,
                Rows=BasicRes.Count
            });
這樣就不會出現讀取重複的欄位進行迴圈引用報錯

建議使用第二種解決方案,因為第一種解決方案會關閉一下EF的特有方法

總結:

該錯誤就是EF讀取時讀取了相同的欄位導致報錯,我們只需要單獨按介面欄位顯示要求讀出資料就不會出現迴圈引用法人錯誤