У меня есть сценарий, в котором я хочу переместить несколько графов объектов между контекстами.В частности, я пытаюсь импортировать содержимое одной базы данных в другую.Существует контекст [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.