實習筆記-3:ef實體操作錯誤篇

學習筆記

1.json序列化ef實體是報錯:“序列化類型爲“System.Data.Entity.DynamicProxies.XXXX.... 對象時檢測到循環引用。”

公司裏用ef來生成實體。但是當我需要當ef構建完的實體裏有其他實體的時候,比如說:在picture裏有a實體。

假設一種情形:獲取一個PagedList<Picture>然後在後臺用json返回時,會報錯:

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

之所以出現這個的原因:因爲這個表和另一個表是有一對多關係的,當序列化表1的時候,會找到和表2關聯的字段,就會到表2中序列化,而表2中也有一個字段和表1相關聯.這樣.序列化就會發生這種錯誤!

解決方法:重新new一個對象就可以了。

 

 2.無法刪除此對象,因爲未在 ObjectStateManager 中找到它。

因爲之前都是在別人項目上進行維護和新增需求,對ef的一些具體的細節方面瞭解不到位。結果就導致了我在刪除ef實體的時候出現瞭如上錯誤。

出現的情景:我通過執行sql獲取到了一個model,然後執行了ef.DeleteObject(model)。報錯:無法刪除此對象,因爲未在 ObjectStateManager 中找到它。

原因:執行ef的刪除操作時,model必須是ef裏的對象,不能自己New一個對象(XXX model = new XXX{ NAME=“123” }),否則會報錯:無法刪除此對象,因爲未在 ObjectStateManager 中找到它。

知道問題所在,就可以解決了:用ef獲取實體的方法獲取該實體然後就可以了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章