2012-05-08 42 views
1

我有一個WPF應用程序,它使用EF4.3.1來實現數據庫。 我在窗體中顯示一個實體,用戶可以在其中編輯值並點擊保存或取消。 問題在於,當用戶點擊取消時,更改不會回滾,實體仍然通過上下文跟蹤並在saveChanges()被其他操作調用時保存到數據庫。 我想知道如果你能指點我一個實現EF/WPF客戶端服務器應用程序的好源。實體框架代碼第一個WPF - 取消更改

另一個副作用是,如果用戶有兩個窗體打開並命中保存在一個..另一個得到保存..清楚我沒有正確使用它。

回答

3

我在這種情況下一直在做的是,我製作實體的副本並將副本提供給用戶進行編輯。當用戶點擊取消時,我只是簡單地複製副本。在保存時,我用副本中的值覆蓋原始實體的屬性(現在由用戶修改),保存原始文件並將副本廢棄。

+0

雖然這可以工作..當你有很多字段和更多字段的嵌套對象時,它可能不是最佳 – skywqr

+1

如果製作副本不適合你(雖然這將是我的第一個建議),但你在調用SaveChanges()之前,可以非常簡單地通過從數據庫中再次獲取對象來取代用戶已取消的對象。這將導致對數據源的調用,但爲什麼我認爲製作副本是最好的方法。 – Tyrsius

相關問題