diff --git a/src/Managing.Infrastructure.Database/PostgreSql/AgentSummaryRepository.cs b/src/Managing.Infrastructure.Database/PostgreSql/AgentSummaryRepository.cs index b75b909..fde58dc 100644 --- a/src/Managing.Infrastructure.Database/PostgreSql/AgentSummaryRepository.cs +++ b/src/Managing.Infrastructure.Database/PostgreSql/AgentSummaryRepository.cs @@ -125,15 +125,28 @@ public class AgentSummaryRepository : IAgentSummaryRepository } else { - // Update existing record - attach and modify the entity + // Update existing record - check if already tracked first var entityToUpdate = MapToEntity(agentSummary); entityToUpdate.Id = existing.Id; // Preserve the existing ID entityToUpdate.CreatedAt = existing.CreatedAt; // Preserve creation date entityToUpdate.UpdatedAt = DateTime.UtcNow; - // Attach the entity and mark it as modified - _context.AgentSummaries.Attach(entityToUpdate); - _context.Entry(entityToUpdate).State = EntityState.Modified; + // Check if an entity with this key is already being tracked + var trackedEntity = _context.ChangeTracker.Entries() + .FirstOrDefault(e => e.Entity.Id == existing.Id); + + if (trackedEntity != null) + { + // Entity is already tracked, update its values + MapToEntity(agentSummary, trackedEntity.Entity); + trackedEntity.Entity.UpdatedAt = DateTime.UtcNow; + trackedEntity.State = EntityState.Modified; + } + else + { + // Entity is not tracked, use Update method which handles state properly + _context.AgentSummaries.Update(entityToUpdate); + } await _context.SaveChangesAsync();