'The instance of entity type 'Cruise' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked
Выдает ошибку при выполнении кода указанного ниже
await _cruiseRepository.UpdateRangeAsync(existedCruises.Select(x =>
new Cruise { Id = x.Id, StartDate = x.StartDate, EndDate = x.EndDate, ShipId = x.Ship.Id }));
Ошибка появляется из-за того, что я создаю новые экземпляры объекта Cruise, но я думал, что можно просто указать Id. Проблему я обошел путем нахождения сущности по id, но из-за этого мне приходится использовать UpdateAsync вместо UpdateRangeAsync в коде ниже. Вопрос в том, что мне кажется код ниже можно сделать более чистым-красивым и более производительным, только как лучше?
foreach(var existed in existedCruises)
{
var entity = await _cruiseRepository.GetByIdAsync(existed.Id);
entity.StartDate = existed.DateStart;
entity.EndDate = existed.DateEnd;
entity.ShipId = existed.Ship.Id;
await _cruiseRepository.UpdateAsync(entity);
}
Метод UpdateAsync выглядит так:
public async Task UpdateAsync(TEntity entity)
{
_dbContext.Set<TEntity>().Update(entity);
await _dbContext.SaveChangesAsync();
}
UpdateRangeAsync выглядит аналогично