Сохранение объекта с дочерними объектами из другого контекста - PullRequest
1 голос
/ 12 декабря 2011

В настоящее время я работаю над приложением, использующим EF 4.1 Code First, и у меня есть вопрос о том, как сохранить новый объект с дочерними объектами из другого контекста.Контекст сохраняется в режиме запроса.

Я создаю новый объект под названием «Вакансия».Затем пользователю предлагается добавить местоположения в коллекцию мест вакансии.Местоположения просматриваются в контексте, и желательно, чтобы я не хотел сохранять местоположения, добавленные в вакансию, обратно в базу данных до тех пор, пока пользователь не завершит работу, что может произойти после нескольких обратных передач.

Проблема в том, что местоположения получены изконтекст, которого больше не существует, поэтому попытка сохранить мою вакансию приведет к ошибке.

Я уверен, что это общая проблема, и я надеюсь, что есть хороший способ справиться с этим.

С уважением,

1 Ответ

0 голосов
/ 12 декабря 2011

Вы должны отсоединить каждую сущность, которую хотите сохранить (вероятно, в сеансе), между несколькими запросами.

context.Entry(loadedEntity).State = EntityState.Detached;

Вы также сможете полностью избежать этого, если отключите создание прокси для загрузки этих объектов и загрузите их без отслеживания.

context.Configuration.ProxyCreationEnabled = false; // This should generally be enough
var loadedEntity = context.Entities.AsNoTracking().FirstOrDefault(...);

Имейте в виду, что во времякроме того, вы должны будете сказать EF, что эти сущности существуют один за другим, правильно устанавливая свое состояние, в противном случае EF попытается вставить их снова.

...