У меня есть Integration Test
, который выполняет обновление объекта в базе данных, поэтому я создаю экземпляр новой сущности, вводю различные свойства и вставляю (вручную) Действительный идентификатор PK . Однако при выполнении обновления выдается следующее исключение:
{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();
}
}
Я вставил Attach из сущности model перед выполнением Update , но исключение сохраняется, чтобы проанализировать проблему, я реализовал код с проверкой Отслеживаемых сущностей, и в результате да, сущность существует. В чем причина проблемы? и возможное решение?
Версии: EF Core 2.1.1.0