2011-02-16 26 views
5

Necesito saber cómo (si es posible) hacer una asociación con una tabla desde una base de datos diferente utilizando entity framework. Tengo un edmx para mi base de datos "xyz" y otro para mi "zyx". Necesito asociarlos usando EF. Sé cómo solucionar esto usando FK, eso no es lo que quiero, quiero poder hacer eso usando el editor visual, no agregando a mano un FK a mi DB.Asociar tablas de diferentes bases de datos - Entity Framework

He aquí un ejemplo practico de lo que quiero:

la tabla de usuario - la base de datos: abc tabla de mensajes - base de datos: xyz

necesito asociar usuarios a los mensajes y viceversa.

¿Alguien me puede ayudar?

Gracias!

+0

Por cierto, no puedo crear FK de base de datos cruzada, que yo sepa, ni a mano ni visualmente. –

+0

Lo sé, eso en realidad no sería un FK. Sería un campo "extID", por ejemplo, en el que pondría el ID del registro de la otra tabla. PD: pero esta es la solución en la que pensé, probablemente haya una mejor manera de solucionarlo. : D gracias por el comentario. – eestein

Respuesta

2

Se pueden realizar consultas entre sí con LINQ-a-objetos, pero no con L2S o L2E.

Un contexto se envuelve alrededor de 1 Db-conexión, no se puede realizar un seguimiento ENTIDADES/actualización de varios de db.

Una posible solución consiste en 'enlace' a uno de los Db del de la otra. MS-SQL puede hacer esto. Para el EF aparecería 1 base de datos.

+0

Veo, ¿te refieres a crear una base de datos de enlace? – eestein

1

No hay forma de lograr esto utilizando la superficie de diseño de edmx en EF.

Se puede encapsular esta asociación dentro de su modelo de dominio y proporcionar una transacción distribuida entre los dos contextos EF. Hemos implementado este último con una clase de contenedor EF Context que, dada una colección interna de contextos, usa un TransactionScope cuando contiene más de un contexto (esto depende de la abstracción de IUnitOfWork para funcionar de manera efectiva).

Cuestiones relacionadas