首页 > 解决方案 > 实体框架为某些用户抛出“System.Data.Entity.Core.OptimisticConcurrencyException”

问题描述

我正在尝试删除用户表和用户配置表,它大部分时间都可以正常工作,但是对于某些用户,它会抛出OptimisticConcurrencyException以下消息:

存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。有关了解和处理乐观并发异常的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=472540

这是我的代码:

var context = UnitOfWork._context;

var userToRemove = context.Users.Where(<some_condition>).ToList();

var userConfigurationsToRemove = (some_condition_with_users_join_on_userConfig).ToList();

if (userToRemove != null && userToRemove.Any())
{
    context.Users.RemoveRange(userToRemove );

    if (userConfigurationsToRemove != null && userConfigurationsToRemove.Any())
    {                         
        context.userConfigurations.RemoveRange(userConfigurationsToRemove );
    }

    context.SaveChanges();
}

我的问题是:users表是子表并且userConfigurations是父表,我可以保存两次更改吗?一个又一个context.Users.RemoveRange(userToRemove );context.userConfigurations.RemoveRange(userConfigurationsToRemove)或者还有什么可以做的吗?

对于一些匿名用户来说,这个问题每天都会出现一次。

标签: c#.netsql-serverentity-frameworkentity-framework-6

解决方案


推荐阅读