Entity framework EF:Store update、insert或delete语句影响了意外的行数(0)

Entity framework EF:Store update、insert或delete语句影响了意外的行数(0),entity-framework,Entity Framework,我使用实体框架来填充网格控件,当我尝试进行更新时,会出现一些错误,比如标题的内容 错误: 受意外事件影响的存储更新、插入或删除语句 行数({0})。实体可能已被修改或删除,因为 实体已加载。刷新ObjectStateManager条目 我做了一些尝试,例如: 检查主键是否正确 没有像[绑定(排除)]这样的代码 我从数据库中获取数据,然后将其修改 这是我的代码: var expProfitDtos = value.ExpProfits as List<FileExpProfitDto>

我使用实体框架来填充网格控件,当我尝试进行更新时,会出现一些错误,比如标题的内容

错误:

受意外事件影响的存储更新、插入或删除语句 行数({0})。实体可能已被修改或删除,因为 实体已加载。刷新ObjectStateManager条目

我做了一些尝试,例如:

  • 检查主键是否正确
  • 没有像[
    绑定(排除)]
    这样的代码
  • 我从数据库中获取数据,然后将其修改 这是我的代码:

    var expProfitDtos = value.ExpProfits as List<FileExpProfitDto>;
    if (expProfitDtos != null && expProfitDtos.Any(ep => ep.EditStatus == EditStatus.Added))
    {
        GenerateFileExpProfitSorting(expProfitDtos, value.File);
    }
    expProfitDtos = expProfitDtos.OrderByDescending(c => c.EditStatus).ToList();
    var expProfits = ProcessDetailsFileExpProfitEntityState<FileExpProfitDto>(expProfitDtos);
    
    执行程序时会出现以下错误代码:
    DbContext.SaveChanges()。


    有没有人看到这个错误,或者有人知道错误消息是什么意思吗?

    < P>看起来我对这个错误有了一些想法,期待最常见的解决方案,我们还需要考虑更新的数据表的主表关联问题。在将表状态设置为“修改”之前,主表已被设置为“修改”一次,因此,表状态被修改两次,并且rowversion值与数据库中的值不一致。

    您会遇到什么错误?就像标题的内容一样:存储更新、插入、,或delete语句影响了意外的行数({0})。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目。
    protected List<FileExpProfit> ProcessDetailsFileExpProfitEntityState<TDto>(List<TDto> dto, IMapper dtoToEntityMapper = null) where TDto : UpdatableDto 
            {
                if (dto == null)
                {
                    return null;
                }
                DbContext ctx = GetDbContext<FileExpProfit>();
    
                List<FileExpProfit> result = new List<FileExpProfit>();
                foreach (var dtoItem in dto)
                {
                    FileExpProfit itemEntity = null;
                    FileExpProfit itemCacheEntity = null;
                    if (dtoToEntityMapper == null)
                    {
                        itemCacheEntity = dtoItem.AutoMapper<FileExpProfit>();
                    }
                    else
                    {
                        itemCacheEntity = dtoToEntityMapper.Map<FileExpProfit>(dtoItem);
                    }
    
                    if (dtoItem.EditStatus == EditStatus.Modified)
                    {
                        itemEntity = DbContext.FileExpProfits
    .Where(d => d.FileExpProfitID == itemCacheEntity.FileExpProfitID)
    .FirstOrDefault();
                        itemEntity.GrpCode = itemCacheEntity.GrpCode;
                        itemEntity.UserID = itemCacheEntity.UserID;
                        //ctx.Set<FileExpProfit>().Attach(itemEntity);
                        ctx.Entry(itemEntity).State = EntityState.Modified;
                        var bo=DbContext.SaveChanges() > 0;
                        Console.WriteLine(bo);
                    }
    
                    result.Add(itemEntity);
                }
    
                return result;
            }