Во избежание исключения «Объект с таким же идентификатором уже существует в EntitySet», объекты, которые обновляются, модифицируются или удаляются, всегда должны полностью обновляться с сервера при сохранении, в памяти не должно быть никаких ссылок на предыдущий экземпляры сущностей. Чтобы предотвратить зависание экземпляров, я следую этим правилам:
Экземпляры сущностей не должны иметь каких-либо измененных свойств обработчиков событий, назначенных непосредственно им, вместо этого следует использовать частичные методы OnCreated или OnPropertyNameChanged.
Когда сущности добавляются в EntitySet, не назначайте родительские ссылки на экземпляры Entity, вместо этого используйте свойство идентификатора внешнего ключа (myEntity.ParentalID = SelectedParent.ParentalID, а не myEntity.Parent = SelectedParent), поскольку SelectedParent, вероятно, не получает перезагружен при сохранении, поскольку он не является частью единицы работы, поэтому ссылка будет сохранена после сохранения и обновления.
Любые поля со списком, которые используются в качестве источников заполнения для свойств объекта, должны быть перезагружены и после сохранения их EntitySet; в противном случае те связанные сущности, которые заполняют комбо, будут содержать ссылки на предыдущий экземпляр сущности.