學習筆記
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獲取實體的方法獲取該實體然後就可以了。