33

Ok, quiero volver a crear un proyecto que creé utilizando EF 4.1 a EF 5.0, lo suficientemente simple o al menos eso pensé. Una de las cosas en mi viejo proyecto es que yo era capaz de cambiar la cadena de conexión de base de datos en tiempo de ejecución en la FE 4.1:EF 5 Cambiar cadena de conexión en tiempo de ejecución

using (var myContext = new MyEntities(ConnectionString)) 
{ 

} 

Fácil-peasy pero en EF 5.0 que tiene que hacer esto de manera diferente:

string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework"; 

using (var myContext = new MyEntities()) 
{ 
     myContext.Database.Connection.ConnectionString = connectionString; 
} 

Ahora, esto me tomó más de dos horas averiguarlo, así que supongo que mi pregunta es ¿esta es la manera correcta de cambiar la cadena de conexión en tiempo de ejecución o no? Si es por eso que hicieron este cambio?

Encontré esto Link pero no funcionó. Recibí el error como se detalla en el primer comentario de la primera respuesta de Ladislav Mrnka. Más tarde encontré esto Link que parece funcionar bien.

ACTUALIZACIÓN

volví a leer el first link he publicado y he encontrado otra solución, simplemente me creé una clase parcial:

public partial class MyEntities : DbContext 
{ 
    public MyEntities(string connectionString) : base(connectionString) 
    { 
      Database.Connection.ConnectionString = connectionString; 
    } 
} 
+15

Debes escribir tu edición como una respuesta y aceptarla ... – SRKX

+0

En tu respuesta, la línea 'Base de datos.Conexión .ConnectionString = connectionString; 'es redundante, porque esa operación ya está hecha por el constructor base. –

Respuesta

6

uso de la sobrecarga contexto constructor que toma la cadena como un parámetro .

Cuestiones relacionadas