EntityFramework 異常 -- An entity object cannot be referenced by multiple instances of IEntityChangeTr

問題
     在調用 DbSet 的 Attach()  方法時(與將 Entity 設置爲 EntityState.Unchanged 狀態等價)報告如下錯誤:
     An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
 
緣由
     實體對象的 DbContext 還沒關閉,此時不容許再 Attach 到另外一個 DbContext 上。
     Attach 的實體對象,必須是脫離 DbContext 的管制。
 
解決方法
     方法一:先關閉作查詢的 DbContext,再 Attach 到作更新的 DbContext 中。
     方法二:將只用於查詢的 DbContext 中的 DbSet 對象繼續調用 AsNoTracking() 方法,這樣獲取的實體就不會被追蹤,而後再將查詢出的實體添加到另外一個要執行 Command 操做的 DbContext  上下文中。這種方法在使用 EntityFramework 的進行讀寫分離的架構中用處比較大。
 
參考文章:
EF:An entity object cannot be referenced by multiple instances of IEntityChangeTracker: http://www.cnblogs.com/ego/archive/2012/05/17/2506070.html
相關文章
相關標籤/搜索