使用EF6 Framework4.5 - 創建我的第一個n層應用程序和第一個EF體驗。我有CRUD工作,但有一個問題,我有一個工作環繞,但不喜歡它。一定會有更好的辦法。阻止分離的實體框架對象中的空更新
當數據對象從我的UI層返回到DAL層時,它已被分離,所以我將EntityState標記爲「已修改」。但隨後它會更新數據庫中的所有列。未在窗體視圖中加載(並未提交)的值顯然爲空,並在db中更新爲這樣的值。
1)我的第一個解決方案確實工作: 商店的形式被提交時,在通過該對象更新編輯的值UI層和環會話的對象。因此,原始值將不變地傳回並更新爲原始值。但我認爲這不是最好的做法。
2)的解決方案,我想,我想: 我打電話的SaveChanges之前通過返回的對象和標誌唯一的非空值「IsModified」的所有值尋找在DAL層的輔助功能循環。
我在C#中找到了關於如何檢查更改值但不爲null的示例。 (反正我還是一個vb的人,不要恨)
A)解決方案#2是一個很好的方法嗎?
B)有沒有人可以幫助我?
謝謝。
順便說一句,這是我最好的刺到目前爲止(在「CurrentValues」錯誤)
Public Overridable Function MarkEntriesModified(entity As Object)
Dim dbEntityEntry = DbContext.Entry(entity)
'Ensure only non-null values are inserted
For Each [property] In dbEntityEntry.CurrentValues.PropertyNames
If Not IsDBNull(dbEntityEntry.CurrentValues.GetValue(Of Object)([property])) Then
dbEntityEntry.[Property]([property]).IsModified = True
End If
Next
Return entity