Проблема глубже, чем вы думаете.
Ваша попытка foreach
не удалась, потому что при вызове product1.Orders.Add
сущность удаляется из product2.Orders
, что делает существующий перечислитель недействительным, что вызывает исключение, которое вы видите.
Так почему сущность удаляется из produc2? Ну, кажется довольно просто: потому что заказ может принадлежать только одному продукту за раз . Entity Framework заботится о целостности данных, применяя правила, подобные этим.
Если я правильно понимаю, ваша цель здесь состоит в том, чтобы на самом деле скопировать заказы от одного продукта к другому, я прав?
Если это так, то вы должны явно создать копию каждого ордера внутри цикла foreach
, а затем добавить эту копию в product1
.
По какой-то причине, которая мне не совсем понятна, не существует автоматизированного способа создания копии объекта. Поэтому вам в значительной степени приходится вручную копировать все свойства заказа, одно за другим. Вы можете сделать код более аккуратным, включив эту логику в сам класс Order - создайте метод с именем Clone (), который будет копировать все свойства. Однако убедитесь, что вы не копируете свойство «ссылка на продукт владельца», потому что весь ваш смысл состоит в том, чтобы дать ему другой продукт владельца, не так ли?
В любом случае, не стесняйтесь задавать больше вопросов, если что-то неясно. И удачи.