我有一個對象被許多對象支付的帳戶支付。我看到,當我更改付款狀態的帳戶的rowversion性能版本也更新了這樣的SQL:由於不必要的更新導致的樂觀併發異常
update [dbo].[Account]
set @p = 0
where (([Id] = 2606 /* @0 */)
and ([Version] = 0x0000000000000C8C /* @1 */))
select [Version]
from [dbo].[Account]
where @@ROWCOUNT > 0
and [Id] = 2606 /* @0 */
絕對關於該交易的賬戶沒有其他更新。我多次檢查了我的代碼,並沒有看到Account對象的任何修改。我也重寫了DbContext的SaveChanges,並且沒有在EntityState.Modified中看到Account對象的條目...
最大的問題不僅是不必要的更新,而且與帳戶關聯的多個付款同時得到更新,當然還會拋出一個樂觀的併發異常,並且事務將回滾並且必須重複。
有人可以建議在我的代碼中檢查/修復/更改以阻止所有這些。
請用更多的信息更新您的問題 - 哪個版本。 EF的聲明,實體是如何聲明的等等 – 2012-08-28 13:43:45