Это очевидная проблема.Вы запрашиваете в своей базе данных запись без владельца и присваиваете нового участника, но без сохранения изменений, вы делаете это в цикле, поэтому запрос должен всегда возвращать одну и ту же строку.
Ваше исключение происходит, только если assignments
Перечислил результат запроса.Если вы хотите избежать этого исключения, просто вызовите ToList в запросе.
Тем не менее, я бы подумал об алгоритме и попытался бы загрузить кровати заранее.Для этого требуется один запрос, чтобы получить назначения, и один запрос + одно обновление для каждой кровати.Если ваши назначения возвращают 1.000 строк, вам нужно будет сделать 1.000 запросов на койки.Вы не избежите 1000 обновлений, потому что EF не поддерживает пакетную обработку команд.Существует также решение о том, что является транзакцией в вашем алогрите.Это обновление односпальной кровати или обработка всех загруженных assignments
?На основании этого решения вы также можете подумать о своем алгоритме.
Кстати.если assignments
- это запрос, он, скорее всего, может быть переписан в какое-то соединение с койками, поэтому вам не нужно будет выполнять подзапросы в цикле.