2012-09-11 11 views
8

Una cosa me está volviendo loco ahora mismo.EF 5.0 y cadena de conexión dinámica?

Mi (Primero en la base de datos) EF-Model necesita una cadena de conexión dinámica (IP-Adress of Server puede cambiar de vez en cuando).

Por lo tanto, en versiones anteriores de EF podría pasar una cadena de conexión a través del constructor, pero eso no es posible en 5.0 como parece.

Lo que he leído hasta ahora, puede cambiar su datatemplate, pero eso se sobrescribirá cada vez que vuelva a generar su modelo, etc., por lo que no es la mejor manera de hacerlo.

Otra cosa es la SQLConnectionFactory, pero parece que no funciona en absoluto (Database.DefaultConnectionFactory = new SqlConnectionFactory(...) parece ser ignorado por completo).

¿Cuál sería el enfoque correcto para eso?

+0

No creo que esto es específicamente un problema EF5, sino más bien que el diseñador no genera una clase derivada DbContext que incluye un constructor para esto. Debería poder modificar la plantilla t4 para generar el constructor que desee. –

+0

¿Ha probado este DbContextConstructor http://msdn.microsoft.com/en-us/library/gg679467%28v=vs.103%29.aspx? es compatible con EF5. –

+0

@ petro.sidlovskyy - Su problema es que la clase de contexto generada por el diseñador no incluye ese constructor, por lo que no puede acceder sin modificar la clase de contexto, pero esto se sobrescribirá cada vez que regenere los datos de la base de datos. –

Respuesta

18

Como dice petro, podría crear una clase parcial con el constructor que desee.

Por ejemplo:

public partial class MyContext : DbContext 
{ 
    public MyContext(string connectionString) : base(connectionString) {} 
} 
+0

Muchas gracias, ¡eso funciona y es la solución perfecta para mí! :) –

Cuestiones relacionadas