我正在使用實體框架4.3和DbContext來更新我的分貝。我有一組用戶,允許任何用戶進行修改,然後更改保存。我的問題是,我發現調用SaveChanges()時意外更新了額外的記錄。實體框架4.3 DbContext SaveChanges更新記錄比預期更
例如,更新與PK用戶= 5〜 '撤銷' 狀態也可用來產生與PK用戶一個SQL UPDATE = 1個
SQL分析器跟蹤:
(不期望THIS)
exec sp_executesql N'declare @p int
update [db].[Users]
set @p = 0
where (([UsersPk] = @0) and ([RowVersion] = @1))
select [RowVersion]
from [db].[Users]
where @@ROWCOUNT > 0 and [UsersPk] = @0',N'@0 int,@1 binary(8)',@0=1,@1=0x0000000000011BFD
(預期)
exec sp_executesql N'update [db].[Users]
set [AccessStatus] = @0
where (([UsersPk] = @1) and ([RowVersion] = @2))
select [RowVersion]
from [db].[Users]
where @@ROWCOUNT > 0 and [UsersPk] = @1',N'@0 varchar(10),@1 int,@2 binary(8)',@0='revoked',@1=5,@2=0x0000000000011C01
要調試這個我用這個
var mods = DbContext.ChangeTracker.Entries<User>().Where(u => u.State == EntityState.Modified);
Debug.Print(mods.Count().ToString());
得到返回1修改的條目數,但調用的SaveChanges()返回2,因爲它確實應該爲2項更新。
我不明白爲什麼生成第一個查詢,因爲這個用戶的屬性沒有被更新 - 他們不應該無論如何。
我懷疑我在這裏忽略了一些相當直接的東西,但無法弄清楚什麼。任何建議不勝感激。
我們無法理解你在做什麼與上下文 – Eranga 2012-02-29 01:07:58
我正在修改一個實體並調用SaveChanges()如上所述 – pilsdumps 2012-02-29 13:15:43