Вы, вероятно, повторно используете старый ObjectContext
.
Эта строка:
_MyEntityManager.AddToTB_FOO(foo)
… Сбой, если в контексте уже существует объект с тем же значением первичного ключа, что и foo
. Он также потерпит неудачу, если foo
связан через свойство навигации с каким-либо другим объектом, который отсоединен, но имеет в контексте "двойник" с тем же значением первичного ключа.
Самый простой способ избежать этих проблем - использовать новый экземпляр ObjectContext
для всего метода и избавиться от него, когда вы закончите. Долгоживущие ObjectContext
почти всегда приводят к утечкам памяти и действительно запутанным ошибкам.