Entity framework 不必要的更新导致乐观并发异常
我有一个对象帐户,它被许多对象引用。我发现,当我更改付款状态时,帐户的rowversion属性版本也会使用如下SQL进行更新:Entity framework 不必要的更新导致乐观并发异常,entity-framework,Entity Framework,我有一个对象帐户,它被许多对象引用。我发现,当我更改付款状态时,帐户的rowversion属性版本也会使用如下SQL进行更新: update [dbo].[Account] set @p = 0 where (([Id] = 2606 /* @0 */) and ([Version] = 0x0000000000000C8C /* @1 */)) select [Version] from [dbo].[Account] where @@ROWCOUNT >
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中未看到Account对象的条目。已修改
最大的问题不仅是不必要的更新,而且与一个帐户相关联的多个付款可能会同时更新,当然会抛出乐观并发异常,事务将回滚,并且必须重复
是否有人可以建议检查/修复/更改我的代码以停止所有这些操作。假设您使用的是EF4.x,那么有一个热修复程序可以纠正此问题。 我也遇到了同样的问题,我可以确认热修复程序可以纠正它 修复:当应用程序使用.NET Framework 4中的实体框架时,SQL应用程序中的主体实体会生成不必要的更新 补充: 提到: 请与Microsoft客户服务和支持部门联系以获取修补程序 您可以在此处请求并获取修补程序:
您将收到一封带有下载URL的电子邮件。确保只在
(
和)
之间复制URL 请用更多信息更新您的问题-哪个版本。对于EF,实体是如何声明的,等等。