Использование как ObjectContext, так и DbContext

Сценарий: попытка извлечь и переназначить информацию из одной базы данных в другую. В БД А есть данные, которые я хочу получить. Я хочу сохранить его в базе данных B в немного другой структуре.

DB A Я использую модель, сгенерированную базой данных EDMX, поэтому она использует производную от ObjectContext. БД Б Я хотел бы быть сгенерированным кодом. Поэтому я использую первый подход с кодом / моделью, устанавливая EntityFramework 4.1 через диспетчер пакетов. Итак, DB B использует производную DbContext

Когда я пытаюсь сохранить информацию из DB A в DB B, он говорит:

Метод тестирования RoutIT.Irma.Import.Service.Test.ImportIrma2ProductTests.ImportProducts вызвал исключение: System.ArgumentException: Не удалось найти тип концептуальной модели для «Некоторая сущность в модели EDMX БД A»

. Фактически это происходит при добавлении сущности БД B к свойству DbSet Derived DbContext БД B. Таким образом, код похож на

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
            foreach (FirstPVC pvc in pvcs)
            {
                this._irmaImport.FirstPVCs.Add(pvc); <--
                this._irmaImport.SaveChanges();
            }
            scope.Complete();
        }
 }

Это происходит в точке кода, отмеченной стрелкой выше ("<-")

FirstPVC является свойством DB B, но в точке стрелки он жалуется на отсутствие концептуальная модель для объекта, принадлежащего контексту БД B.

Это странно, поскольку я пытаюсь сохранить объект БД B в контексте БД B. Почему он должен заботиться о сущностях БД A.

Все контексты содержатся в одном проекте. Но Derived DbContext DB B имеет информацию только о своих собственных свойствах DbSet <>, и внезапно при попытке добавить что-то в свойство DbSet <> он выдает ошибку, выделенную жирным шрифтом выше.

Кто-нибудь знает, почему это происходит? Почему DbContext должен заботиться об объектах другого контекста, в частности об одном из производных классов ObjectContext.

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

[EdmEntityTypeAttribute(NamespaceName="Irma2Model", Name="AccessProvider")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AccessProvider : EntityObject
{
    /*****...... ******/
}
6
задан Mike Chamberlain 6 April 2012 в 16:38
поделиться