我有一个对象帐户,它被许多对象付款引用。我看到,当我更改付款状态时,Account 的 rowversion 属性 Version 也会使用如下 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 对象的条目...
最大的问题不仅是不必要的更新,而且与一个帐户关联的多个付款可能会同时更新,当然会抛出一个乐观并发异常,并且事务将回滚并且必须重复。
有人可以建议在我的代码中检查/修复/更改什么来阻止这一切。