2012-09-11 4 views
8

Una cosa mi sta facendo impazzire in questo momento.EF 5.0 e stringa di connessione dinamica?

Il modello EF (dal primo database) richiede una stringa di connessione dinamica (l'indirizzo IP del server potrebbe cambiare una volta ogni tanto).

Quindi nelle precedenti versioni EF è possibile passare una stringa di connessione tramite costruttore, ma ciò non è possibile in 5.0 come sembra.

Quello che ho letto finora, è possibile modificare il datatemplate, ma questo verrà sovrascritto ogni volta che si ricrea il modello ecc., Quindi non è il modo migliore per farlo.

Un'altra cosa è SQLConnectionFactory, ma quello non sembra funzionare affatto (Database.DefaultConnectionFactory = new SqlConnectionFactory(...) sembra essere ignorato completamente).

Quale sarebbe l'approccio giusto per questo?

+0

Io non credo che questo è specificamente un problema EF5, ma piuttosto che il progettista non genera una classe derivata DbContext che include un costruttore per questo. Dovresti essere in grado di modificare il modello t4 per generare il costruttore che desideri. –

+0

Hai provato questo DbContextConstructor http://msdn.microsoft.com/en-us/library/gg679467%28v=vs.103%29.aspx? è supportato in EF5. –

+0

@ petro.sidlovskyy - Il suo problema è che la classe di contesto generata dal progettista non include quel costruttore, quindi non può accedervi senza modificare la classe di contesto, ma questo verrebbe sovrascritto ogni volta che rigenera i dati dal db. –

risposta

18

Come petro menziona, è possibile creare una classe parziale con il costruttore desiderato.

Per esempio:

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

Grazie mille, questo funziona ed è una soluzione perfetta per me! :) –