Pregunta

En Linq2Sql puede conectar un contexto de datos a varias bases de datos simplemente agregando el nombre de la base de datos a la fuente .

¿Hay alguna manera de lograr esto en Linq 2 Entities / ADO.net Entity Framework? ¿Se puede agregar el nombre de la base de datos en algún lugar al nombre de la tabla?

Intenté cambiar el 'Esquema' de dbo a MyDatabase.dbo , pero el EF encapsula esto en

SELECT FROM [MyDatabase.dbo].[MyTable]

Aficionados como cambiar 'Esquema' a 'Mi Base de Datos]. [dbo' se escapará a

SELECT FROM [MyDatabase]].[dbo].[MyTable]

(Tenga en cuenta los dos ]] .)

¿Fue útil?

Solución

Primero, esto no es oficialmente compatible .

La respuesta a la que se vincula para LINQ to SQL es simplemente usar la capacidad del servidor de base de datos para realizar consultas heterogéneas. No veo por qué eso no funcionaría para Entity Framework, ya que es una función de servidor de base de datos, no una característica de ninguno de los marcos. En otras palabras, LINQ to SQL aún trata con la conexión como si solo estuviera involucrado un servidor de base de datos. Sin embargo, tenga en cuenta que no todos los servidores de bases de datos pueden hacer esto.

En cuanto a qué cambiar en el EDMX, busque el atributo Esquema del nodo EntitySet en el " contenido SSDL " sección.

Una advertencia sobre esta técnica es que cuando actualiza su modelo desde la base de datos, el modelo de almacenamiento se borra y se reemplaza desde cero. Así que necesitarías volver a aplicar estos cambios. Esto no es un problema en LINQ to SQL, porque LINQ to SQL no admite actualizaciones automáticas de la base de datos en absoluto.

Probablemente, una mejor alternativa sería crear una VISTA en la base de datos que haga referencia a la otra base de datos y asigne esa vista en lugar de mapear la tabla y la otra base de datos directamente.

Otros consejos

Si su base de datos admite SQL Sinónimos, puede combinar las dos definiciones de base de datos en un archivo. Hice eso recientemente y publiqué cómo lo hice aquí si estás interesado.

Básicamente, creas sinónimos en la base de datosA apuntando a la base de datosB, creamos un archivo edmx separado para cada base de datos, y luego ejecutas un script para fusionar los archivos edmx en un solo archivo que se conecta a cualquier base de datos que tenga la configuración de sinónimos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top