正在修改1行中的1个字段...数据库操作预期会影响1行但实际上会影响2行

时间:2018-09-20 05:23:36

标签: entity-framework-core

这是具有两个索引的本地数据库。没有其他连接。即使更新一行,也会出现并发异常。 ??

请注意,添加行效果很好。

阅读其他线程,我确保datetime字段为DATETIME2(7)。另外,我尝试将“更改”减少为单个未索引字段,但仍然出现异常。

代码减少为可复制的样本。

错误: Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException:'数据库操作预期会影响1行,但实际上会影响2行。自加载实体以来,数据可能已被修改或删除。有关了解和处理乐观并发异常的信息,请参见http://go.microsoft.com/fwlink/?LinkId=527962

var lastSet = context.DB.Where(u => u.time >= startTime);

foreach (var line in lines)
{
    var found = lastSet.FirstOrDefault(u => u.id.Trim() == line["id"].Trim());
    if (found != null)
    {
        if (found.updated.ToString() != DateTime.Parse(line["updated"]).ToString())
        {
            found.count = string.IsNullOrWhiteSpace(line["count"]) ? 0 : double.Parse(line["count"]);
            //more like this, with 2 dates, 10 doubles, 1 decimal and 10 strings.

            ++changed;
        }
    }
}

if ( changed>0 )  //even when changed is 1, the error occurs
{
    context.SaveChanges(); //DBUpdateConcurrencyException HERE
}

0 个答案:

没有答案