Tengo varias bases de datos, el esquema de ellas es el mismo. Cuando uso database-first, la cadena de conexión se especifica cuando creo el archivo edmx. Quiero saber, ¿hay alguna manera de cambiar la cadena de conexión? Esto es así, así que puedo elegir qué base de datos operar. ¡Thx por adelantado!¿Hay alguna manera de cambiar primero la cadena de conexión en la base de datos?
Respuesta
Cambie la cadena de conexión en el archivo web.config.
<connectionStrings>
<add name="SandBoxEntities" connectionString="metadata=r... />
</connectionStrings>
que abrevia la cadena de conexión real, ya que no es importante - sólo quería darle una idea de lo que debe buscar en el archivo web.config.
También puede cambiar las cadenas de conexión de forma programática. Consulte Example 16.2. Programmatically modifying an EntityConnectionString.
No almacenamos cadenas de conexión en nuestra web.configs, por lo que la solución aceptada no nos funcionaría. Si simplemente intento de proporcionar la cadena de conexión a través de la base DbContext constructor, que obtendrá la siguiente excepción:
código generado usando las plantillas T4 para la primera base de datos y el desarrollo del primer modelo puede no funcionar correctamente si se utiliza en Código Primer modo. Para continuar utilizando Database First o Model First, asegúrese de que la cadena de conexión de Entity Framework esté especificada en el archivo de configuración de la aplicación en ejecución. Para utilizar estas clases, que se generaron desde Database First o Model First, con Code First agrega cualquier configuración adicional utilizando atributos o la API de DbModelBuilder y luego elimina el código que arroja esta excepción.
Para resolver esto, cree una clase parcial de su contexto de la siguiente manera y dar formato a la cadena de conexión con los metadatos adicionales EF (donde MyContext es su contexto nombre del modelo (por ejemplo, el nombre del modelo es MyModel.edmx, que la MyContext
en código de abajo se sustituye con MyModel
con las tres extensiones .csdl, .ssdl, .msl utilizado)):
public partial class MyContext
{
public MyContext(string connStr)
: base(string.Format(@"metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provider connection string='{0}'", connStr))
{
}
}
Para que esto funcione para mí, tuve que cambiar el " a una sola cotización como se describe en esta respuesta: http://stackoverflow.com/a/7004173/994464 – Brenton
Directo y simple. –
puede definir cadena de conexión múltiple en web.config y luego utilizarlos en su código quizá tu trabajo. por ejemplo: `
<connectionStrings>
<add name="conStr1" connectionString="metadata=r... />
</connectionStrings>`
<connectionStrings>
<add name="conStr2" connectionString="metadata=r... />
</connectionStrings>`
y así sucesivamente
y su constructor de clase de contexto de obtener la conexión nombre de la cadena como parámetro:
public MyContext(string connStr)
: base(connStr) { }
Ok. ahora se puede utilizar en el código de la siguiente manera:
using (var db = new MyContext("name=conStr1"))
{
//your code here
}
y luego
using (var db = new MyContext("name=conStr2"))
{
//your code here
}
- 1. Código primero contra base de datos Primero
- 2. Cómo obtener la conexión Cadena de una base de datos
- 3. ¿Cuál es la mejor manera de asegurar una cadena de conexión de base de datos?
- 4. ¿Cómo obtener información de la base de datos con la base de datos de entidad de trabajo primero?
- 5. dónde cambiar la configuración de conexión de la base de datos en Orchard MVC CMS
- 6. ¿Hay alguna manera de ejecutar Trac sin conexión?
- 7. ¿Hay alguna manera de que pueda cambiar el orden de carga de Apache VirtualHosts primero?
- 8. Cambiar nombres de entidades y propiedades en la base de datos Primero
- 9. ¿Cómo se parametriza la cadena de conexión de la base de datos en un paquete SSIS?
- 10. Cómo obtener la base de datos de Mongo especificada en la cadena de conexión en C#
- 11. Retraso en la conexión a la base de datos C#
- 12. Cambiar la cadena de conexión del conjunto de datos en tiempo de ejecución
- 13. La mejor manera de administrar la conexión de base de datos para un servlet de Java
- 14. Nombre de la base de datos después de subrayado en cadena de conexión se ignora
- 15. Accediendo a la cadena de conexión de la base de datos usando app.config en C# winform
- 16. Base de datos Wiki, ¿hay alguna?
- 17. ¿Hay alguna manera de obtener datos ortográficos de un NSString?
- 18. cadena de conexión para servidor de base de datos remota
- 19. Cómo obtener el nombre de la base de datos de la cadena de conexión utilizando SqlConnectionStringBuilder
- 20. Cadena de conexión de base de datos Información
- 21. Datasnap: ¿Hay alguna manera de detectar la pérdida de conexión globalmente?
- 22. informes de Crystal - cerrar la conexión de base de datos
- 23. JUnit + DbUnit: cambiar la conexión de la base de datos entre entornos de desarrollo y prueba
- 24. Cambiar la cadena de conexión predeterminada para Membresía, Roles, etc.
- 25. ¿Hay alguna manera de cambiar la puntuación según la posición de término en Lucene?
- 26. ¿Hay alguna manera de "reiniciar" la JVM?
- 27. ¿Hay alguna manera fácil de ordenar NameValueCollection sobre la base de la clave en C#?
- 28. ¿Cómo comprobar la fuga de conexión de la base de datos en la aplicación Java EE?
- 29. Cómo cambiar la codificación de la base de datos phpMyAdmin
- 30. ¿Hay alguna manera eficiente de hacer que la consulta de la base de datos de Android sea más rápida?
sé cómo configurar cadena de conexión en web.config, lo que quiero saber es cómo cambiar en tiempo de ejecución, esto es así, entonces puedo elegir qué base de datos usar. La cadena de conexión ya se ha configurado cuando creo el archivo edmx, ¿hay alguna manera de cambiarlo en tiempo de ejecución? – James
OK - Edité mi respuesta y le di un enlace que le muestra exactamente cómo hacerlo. –
Esta pregunta y respuestas lo ponen todo en una conveniente frase: http://stackoverflow.com/questions/14440698/setup-entity-framework-for-dynamic-connection-string. –