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