Строка ...
var dbEnt = _context.Set<TEntity>().Where(c => c.Id == entity.Id).First();
... присоединяет объект сущности к контексту и возвращает ссылку на эту сущность.
Затем строка ...
dbEnt = entity;
... заменяет эту ссылку ссылкой на переменную entity
, которая входит в метод.То есть не отслеживаемый объект сущности .Вы в основном потеряли ссылку на отслеживаемую сущность, и ее невозможно больше изменить.
Вы должны либо присоединить entity
к контексту и пометить его как измененный, либо получить dbEnt
, как вы уже сделали, иизменить и сохранить этот объект.Оба метода имеют свои плюсы и минусы, см. здесь .