EF:存储更新,插入或删除语句影响了意外的行数(0)

问题描述 投票:0回答:1

我正在使用Entity Framework填充网格控件,并且在尝试进行更新时出现一些错误,例如标题的内容。

错误:

存储更新,插入或删除语句影响了意外行数({0})。自从以来,实体可能已被修改或删除实体已加载。刷新ObjectStateManager条目。

例如,我做了一些尝试:

  1. 检查主键是否正确;
  2. 没有类似[Bind(Exclude)];]的代码>
  3. 在修改之前,我从数据库中获得了该数据;
  4. 这是我的代码:

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);

以及ProcessDetailsFileExpProfitEntityState()的详细信息:

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;
        }

执行程序时,出现以下错误:DbContext.SaveChanges().

有人见过此消息,还是有人知道错误消息指的是什么?

我正在使用Entity Framework填充网格控件,并且在尝试进行更新时出现一些错误,例如标题的内容。错误:存储更新,插入或删除语句影响了...

entity-framework
1个回答
0
投票

看来我对这个错误有一些想法,希望有最常见的解决方案,我们还需要考虑更新数据表的主表关联问题。在对表状态进行修改之前,对主表进行一次修改,因此,对表状态进行了两次修改,并且rowversion的值与数据库中的值不一致。

© www.soinside.com 2019 - 2024. All rights reserved.