在Entity Framework Core上执行更新时出错

时间:2019-07-01 20:27:01

标签: entity-framework entity-framework-core

我有一个Integration Test来执行数据库中对象的更新,因此我实例化了一个新实体,然后输入不同的属性并插入(手动)一个有效PK ID 。但是,执行更新时,将引发以下异常:

  

{Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException:数据库操作预期会影响1行,但实际上影响0行。自加载实体以来,数据可能已被修改或删除。

由于当前该对象没有被EF跟踪,因此我将映射器更改为按以下方式工作(附加模型):

using (var contexto = ContextUtils.ObtenhaContextSQLServer())
{
    using (var transacao = contexto.Database.BeginTransaction())
    {

        //Insert to test, Count == 0
        var antesDeAttach = contexto.Chamarizes.Local;

        //Insert to test
        contexto.Attach(model);

        //Insert to test, Count == 1
        var depoisDeAttach = contexto.Chamarizes.Local;

        contexto.Entry(model).State = EntityState.Modified;
        contexto.Entry(model).Property(x => x.DataCriacao).IsModified = false;

        contexto.Update(model);
        contexto.SaveChanges();
        transacao.Commit();
    }
}

我在执行 Update 之前从 model 实体中插入了 Attach ,但是该异常仍然存在,为了分析问题,我实现了代码经过 Tracked 实体的验证,结果是该实体存在。是什么原因造成的?和可能的解决方案?

版本:EF Core 2.1.1.0

0 个答案:

没有答案