有人貼出了答案,但刪除它之前,我可以添加評論。所以這裏是他們的答案加我自己的答案。
是的,簡而言之,它只會更新更改的列。這假定你正在使用上下文(不完全確定這是什麼意思)
爲了測試這個,我使用了Trace中的日誌。
Using DB As New wotcDB
DB.Database.Log = Sub(val) Diagnostics.Trace.WriteLine(val)
Dim Update = (From t In DB.interview_income
Where t.ID = IncomeID).First
Update.Company = If(String.IsNullOrEmpty(txtCompany.Text), Nothing, txtCompany.Text)
Update.StartDate = If(IsNothing(txtStartDate.DateValue), Nothing, txtStartDate.DateValue)
Update.EndDate = If(IsNothing(txtEndDate.DateValue), Nothing, txtEndDate.DateValue)
Update.HWM = If(String.IsNullOrEmpty(cboHWT.Text), Nothing, cboHWT.Text)
Update.Wage = txtWage.DecimalValue
Update.Units = If(String.IsNullOrEmpty(txtHourPerWeek.Text), Nothing, CDec(txtHourPerWeek.Text))
Update.Adj = txtAdj.DecimalValue
Update.Total = txtTotal.DecimalValue
DB.SaveChanges()
End Using
線
DB.Database.Log = Sub(val) Diagnostics.Trace.WriteLine(val)
寫出所有生成的SQL的跟蹤。當我做了一個沒有任何值更改的更新時,它沒有打擾生成更新聲明。當我更改一列時,它會生成一個只有該列和密鑰的更新。
所以,兩個答案中的一個。使用該數據庫日誌查看您生成的SQL,並且只在需要時更新。
請參閱[這個答案](http://stackoverflow.com/questions/1412863/how-do-i-view-the-sql-generated-by-the-entity-framework/20751723#20751723)關於如何查看EF生成的SQL –
這取決於您如何使用EF。如果您正在修改的實體已連接,則它只會更新已更改的列。如果未保存,並且在保存之前未檢索當前值,則將更新除主鍵以外的所有列。 – jrummell