在我的應用程序中,我需要檢索實體的大圖,在分離時進行各種更改(添加實體,進行更改,刪除實體),然後將圖保留回數據庫。我嘗試過STE,但它開始使我的客戶層的某些方面過於複雜,所以我希望通過使用POCO來保持簡單(至少在客戶端)。實體框架 - 堅持POCO實體的圖形
當涉及到持續的變化,我想我可以再從數據庫檢索的圖形,然後步行兩本圖,並從客戶端層的圖形,尋找差異: -
- 一在數據庫圖中存在實體而不是客戶端圖的情況下刪除操作。據推測,我可以從數據庫圖表
.Remove()
這些。 - 新實體是客戶端圖中ID爲0的實體。大概我可以將
.Add()
這些添加到數據庫圖中。 - 我不確定處理更新的最佳方法。我不想在我的實體上實現「IsDirty」標誌,並且更喜歡更自動的解決方案。所以a)是否有辦法將客戶端圖中的實體與其數據庫中的實體進行比較,以確定它是否發生了變化,以及b)將客戶端實體應用/合併到數據庫對象中的最佳方式是什麼?
一旦完成了這一切,我估計只是在數據庫圖上調用SaveChanges()。我還必須將此圖傳回客戶端,以確保它具有最新版本(數據庫生成的值,如ID,時間戳)。
我的解決方案是否過於簡單?如果可行,我如何處理上面列出的更新?
這是一個廣泛的主題。我建議你找到Lerman&Miller的書_DbContext_的副本,並閱讀第4章關於如何與斷開連接的實體一起工作。他們提出的方法是實現一個接口'IObjectWithState',它使對象跟蹤自己的更改狀態。我不能說它非常優雅,但可能比通過自己遍歷特定對象圖更通用。 –