В вашем конкретном случае, вероятно, можно просто удалить Attach
линию. Attach
помещает отдельный объект, включая другие отдельные объекты в графе объектов, в состояние Unchanged
. Когда вы меняете состояние на Modified
, это влияет только на родительский объект, дети все еще находятся в состоянии Unchanged
. Если вы звоните SaveChanges
, то дети не будут сохранены, так как их состояние равно Unchanged
.
Если вы не вызываете Attach
дети остаются отдельностоящий до SaveChanges
не называется, где EF будет предположить, что они новые лица (потому что они не привязаны к контексту) и установить их состояние в Added
. Затем они будут вставлены в базу данных.
Однако, если вы удалите строку Attach
, вы больше не можете использовать метод, чтобы обновить отношения между существующим родителем и существующими дочерними элементами.
В общем случае, когда отдельный объект содержит дочернюю коллекцию сущностей, которые были изменены, добавленные туда, где сущности были удалены из вас, обычно необходимо перезагрузить исходный граф объекта из базы данных и объединить изменения в него. Такое обновление сложного графа отдельных объектов не работает в общем виде и потребует конкретный код типа сущности. Пример: https://stackoverflow.com/a/5540956/270591