I have this class that I use for DB operations:
public class EntityService<TEntity> : IRepository<TEntity> where TEntity : BaseModel { ApplicationDbContext _context; private DbSet<TEntity> _entities; public EntityService() { _context = new ApplicationDbContext(); } public virtual void Update(TEntity entity) { if (entity == null) throw new ArgumentNullException(nameof(entity)); try { var dbEnt = _context.Set<TEntity>().Where(c => c.Id == entity.Id).First(); dbEnt = entity; dbEnt.UpdatedBy = GetCurrentUser(); dbEnt.DateUpdated = DateTime.Now; _context.SaveChanges(); } catch (DbUpdateException exception) { throw new Exception(GetFullErrorTextAndRollbackEntityChanges(exception), exception); } //-----other methods for insert and get working fine---- } There are also other methods in this class for insert and get are working fine. Only this update method is not updating the entity and not throwing the exception.
UPDATE
I am facing similar problem but opposite in functioning here: Add() method adding duplicate rows for linked models in Code-First Entity Framework
I think these two have same reason of Change Tracking. But one is adding other is not updating.
entitywhy you again get it and putentityindbEnt?entityis just method parameter.dbEntwith parameter ofentitylike this: for example:edbEnt.Name = entity.Nameand dont usedbEnt = entity.context.Entry(entity).State=EntityState.Modified;.