2011-12-24 9 views
8

que tiene 2 bases de datos separadas con el mismo esquema, necesito copiar entidades (registros) de una base de datos a otro utilizando Entity Framework 4.El uso de Entity Framework para copiar bases de datos de entidades entre

estoy creando 2 Contextos, pero estoy recibiendo el siguiente error cuando agrego una entidad a la segunda Contexto:

An entity object cannot be referenced by multiple instances of IEntityChangeTracker. 

sé que puedo evitar que el error si uso el método Separar, pero en ese caso se pierden las entidades relacionadas!

Código de ejemplo:

 var cx = new MyEntities(); 

     //eager load related tables 
     var allEntities = from x in cx.Reservation.Include("Detail.MoreDetail") 
        select x; 

     // new instance of context but connected to a second database 
     var cx2 = new MyEntities(new ConnectionString...); 
     foreach (var e in allEntities) 
     { 
      //cx.Detach(reservation); // can't detach, or related entities will be lost 
      cx2.AddToReservation(reservation); // error happens here! 
      cx2.SaveChanges();     
     } 

¿Cómo puedo realizar tal operación? Alternativamente, ¿cómo puedo separar la entidad sin perder las entidades relacionadas?

Respuesta

8

Por una vez, el mensaje de error es útil: las entidades solo pueden pertenecer a un contexto a la vez. Para hacer lo que necesita, necesitará Detatch cada entidad desde el primer contexto antes de agregarlo al segundo.

Como dijo, esto matará a las entidades relacionadas. Desafortunadamente, tendrás que lidiar con este aspecto (molesto) de Detach.

Cuestiones relacionadas