我有一个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