Escenario: tratando de extraer y reacomodar información de una base de datos a otra. DB A tiene algunos datos que quiero obtener. Quiero almacenarlo en DB B en una estructura ligeramente diferente.Uso de ObjectContext y DbContext
DB A Obtengo el uso de un modelo generado por la base de datos EDMX por lo que utiliza una derivada de ObjectContext. DB B Me gustaría ser generado por código. Así que uso el primer enfoque de código/modelo instalando EntityFramework 4.1 a través del administrador de paquetes. Así DB B utiliza un derivado DbContext
Cuando intento para almacenar la información de base de datos de A a B es DB dice:
RoutIT.Irma.Import.Service.Test.ImportIrma2ProductTests.ImportProducts Método de ensayo arrojaron excepción: Sistema .ArgumentException: no se pudo encontrar el tipo de modelo conceptual para 'Some entity in DB A's EDMX model'
Lo hace al agregar una entidad DB B a la propiedad DbSet del DbContext Derivado de DB B. Así que el código es como
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
foreach (FirstPVC pvc in pvcs)
{
this._irmaImport.FirstPVCs.Add(pvc); <--
this._irmaImport.SaveChanges();
}
scope.Complete();
}
}
Sucede en el punto en el código marcado por la flecha de arriba ("< -")
FirstPVC es una propiedad DB B pero a la punta de la flecha se se queja de no tener un modelo conceptual para una entidad que pertenece al contexto de DB B.
Esto es extraño ya que intento almacenar una entidad DB B en el contexto DB B. ¿Por qué debería preocuparse por las entidades de DB A.
Todos los contextos están contenidos en el mismo proyecto. Pero el DbContext Derivado de DB B solo tiene conocimiento sobre sus propias propiedades DbSet <>, de repente cuando intento agregar algo a la propiedad DbSet <> me da el error en negrita anterior.
¿Alguien sabe por qué sucede esto? ¿Por qué debería DbContext preocuparse por las entidades de otro contexto específicamente uno de una clase derivada ObjectContext.
perhapse que es útil tomar nota de la entidad a la que se queja se ve un poco como esta
[EdmEntityTypeAttribute(NamespaceName="Irma2Model", Name="AccessProvider")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AccessProvider : EntityObject
{
/*****...... ******/
}
pienso Tengo el mismo problema. Tenía dos EDMX DB-first mapeando diferentes tablas del mismo DB y ahora he cambiado uno de ellos al modelo más nuevo EF4.1 DbContext/POCO. Sin embargo, cuando intento usar este último, obtener un error sobre un modelo que falta para una tabla en el otro EDMX. Tal vez esta respuesta es relevante?: http://stackoverflow.com/questions/3521497/how-does-ms-entity-framework-map-from-the-conceptual-model-to-clr-types. Tenga en cuenta que creo que tiene un error tipográfico en su publicación "se queja de no tener un modelo conceptual para una entidad que pertenece al contexto de DB B", quiere decir DB A ¿verdad? – zeroid
http://stackoverflow.com/questions/6899567/mixing-model-first-and-code-prime esto también. Sin respuesta, aunque – zeroid