2009-09-04 33 views

Respuesta

3

No creo que lo que está buscando sea posible, ya que el DataContext no tendría una forma fácil de resolver los resultados de dos bases de datos separadas.

Si está buscando crear objetos de dominio desde dos bases de datos separadas, entonces la mejor opción sería tener dos DBML separados, luego usar un puente (GOF) u otro patrón de diseño relacionado para crear instancias de objetos de dominio.

+0

¿Tiene enlaces a cómo funcionaría esto? Creo que tengo una situación similar. Tengo una base de datos maestra que contiene una lista de clientes y el nombre del servidor y el nombre de la base de datos para cada uno de los clientes. Todos ellos tienen una estructura de base de datos idéntica. Por lo tanto, me gustaría completar el modelo desde diferentes bases de datos dependiendo del cliente seleccionado. – stephenbayer

+1

@stephenbayer - su situación es en realidad un poco diferente. Dado que los datos no se distribuyen en múltiples DB, su trabajo es un poco más fácil. Cree un servicio (web, soap, rest, no importa para esta discusión) que sepa cómo encontrar una cadena de conexión o un prefijo de nombre de base de datos (más seguro) para sus DB. Use un identificador de cliente como índice para encontrar la base de datos específica. Su aplicación puede consultar este DB de cliente para obtener información sobre cómo conectarse a la base de datos específica. –

0

Otra opción es crear un enlace de servidor en la base de datos que apunta a la otra y crear alias a las tablas remotas desde la base de datos "local". Creo que entonces podrías referenciarlos como si estuvieran todos en la misma base de datos.

+0

si bien esta es una respuesta técnicamente correcta, ¿no sería una mala práctica seguirla? He tenido que lidiar con servidores vinculados en el pasado, y en mi experiencia, no ha sido bonito en términos de mantenibilidad o rendimiento –

5

Es posible hacer referencia a múltiples bases de datos dentro del mismo DBML, SIEMPRE que esas bases de datos residan en el mismo servidor SQL.

En Visual Studio, haga clic derecho en DBML, haga clic en "Abrir con ..." y seleccione XML (Text) Editor with Encoding.

Usted verá a su primera tabla que ha arrastrado en el aspecto siguiente:

< Tabla Name = "dbo.MyTable1fromMyDatabase1" Miembro = "MyTable1fromMyDatabase1" >

para las tablas de otra bases de datos que desea añadir, entrar en ellos de esta manera:

< Tabla Name = "MyDatabase2.dbo.MyTable1fromM yDatabase2" Miembro = 'MyTable1fromMyDatabase2' >

Esto funciona asumiendo el mismo nombre de usuario que funciona para ambas bases de datos, y sus expresiones LINQ ahora puede consultar a través de ambas bases de datos!

0

También podemos crear una vista que consulte la tabla en la otra base de datos. Podemos seleccionar, insertar y actualizar esta vista, lo que afectará a la tabla en la otra base de datos también.

Cuestiones relacionadas