'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 выглядит аналогично


Ответы (0 шт):