Перемещение сущностей между контекстами в .NET Entity Framework 3.5 - PullRequest
0 голосов
/ 04 августа 2010

У меня есть сценарий, в котором я хочу переместить несколько графов объектов между контекстами.В частности, я пытаюсь импортировать содержимое одной базы данных в другую.Существует контекст [CurrentContext], связанный с первичной БД, и другой контекст [ImportContext], связанный с другой БД.Я хотел бы скопировать объекты из ImportContext в CurrentContext, либо вставляя новые записи, либо обновляя существующие.Примерно так.

ImportContext.Organization.MergeOption = MergeOption.NoTracking;foreach (var org in ImportContext.Organizations.ToList ()) {CurrentContext.Attach (org);// или CurrentContext.AddToOrganization (org);}

Когда я пытаюсь использовать метод Attach, объект не сохраняется, поскольку состояние объекта не изменяется, и я не могу понять, как пометить его как новый.Кроме того, кажется, что Attach не работает, если объект новый, потому что EntityKey привязан к ImportContext.Если я установлю EntityKey в null, я потеряю связи между Организацией и другими объектами.AddToOrganization имеет ту же проблему с потерей ассоциаций, или потерпит неудачу, если однажды Организация уже была в CurrentContext.

Каков подход к выполнению этого типа импорта?В настоящее время я использую EF3.5 и не могу обновить проект до EF4.

1 Ответ

1 голос
/ 04 августа 2010
  1. Detach сущность из старого контекста.
  2. AddObject сущность в новом контексте.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...