簡體   English   中英

僅保存在Entity Framework 4中已更改的字段

[英]Saving only fields that have changed in Entity Framework 4

我有一個帶有一些文本框和一個保存按鈕的Windows窗體。 加載表單時,將使用來自模型中實體的數據填充文本框。 當用戶單擊保存按鈕時,每個文本框中的值將寫回到實體,然后調用SaveChanges將數據提交到數據庫。

我想知道的是檢查表單是否包含更改的最佳方法是什么? 如果它不包含更改,則無需調用SaveChanges,並且可以保存將記錄寫回到數據庫中。 如果它確實包含更改,並且用戶沒有單擊“保存”按鈕,我想獲得用戶的確認,即不需要保存更改。

我以為也許我可以先更新實體的字段,然后在調用SaveChanges之前檢查其State屬性,但這會失敗,因為即使更新具有相同值的任何字段,也會導致該實體被標記為已修改。

因此,我的問題是,在調用SaveChanges之前檢查表單是否已實際更改的最佳方法是什么?

謝謝,

馬特

您可以檢查實體狀態。 只需將數據從文本框中保存到實體,然后查看EntityState是否為EntityState.Unchanged即可

此處的詳細信息: http : //msdn.microsoft.com/en-us/library/system.data.entitystate.aspx

實際上,即使使用與前一個值相同的值來更新字段,也算作已修改實體,並且在大多數情況下,這是正確的業務規則。

您可以做的是保留用於填充表單字段的原始對象的副本,並使用相等比較器將其與當前對象進行比較。 它不是很漂亮,但是在某些情況下可以完成工作,而您不能依靠對象狀態管理器的修改意見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM