2013-02-26 8 views
5

Attualmente sto cercando di utilizzare lo stesso DbContext (ho due database, di struttura identica) nella mia applicazione. Non sono abbastanza sicuro di cosa sto sbagliando, ma qui è il mio codice corrente - si spera che dovrebbe essere abbastanza ovvio cosa sto cercando di fare. Sto usando EF Database First (che l'errore in basso sembra non suggerire).Entity Framework: utilizzo dello stesso DbContext con stringhe di connessione diverse

Il mio codice contesto fabbrica:

public class HOLContextFactory 
    { 
     public static HOLDbEntities Create() 
     { 
      return new HOLDbEntities(); // Works 
     } 

     public static HOLDbQuoteEntities CreateQuote() 
     { 
      return new HOLDbQuoteEntities(); // Gives error 
     } 
    } 

public partial class HOLDbQuoteEntities : HOLDbEntities 
    { 
     public HOLDbQuoteEntities() 
      : base("HOLDbQuoteEntities") // This should send "HOLDbQuoteEntities" as the base connection string?! 
// Also tried "name=HOLDbQuoteEntities" 
      { 
      } 
     } 

Web.config stringhe di connessione:

<add name="HOLDbEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 

<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> // using diff database - same structure 

errore sto ottenendo quando si utilizza "HOLDbQuoteEntities":

codice generato utilizzando il Modelli T4 per Database First e Model Il primo sviluppo potrebbe non funzionare correttamente se utilizzato in Code First m ode. Per continuare a utilizzare Database First o Model First, assicurarsi che la stringa di connessione Entity Framework sia specificata nel file di configurazione dell'applicazione in esecuzione. Per utilizzare queste classi, che sono stati generati da Database Primo o Modello In primo luogo, con il codice Prima aggiungere alcuna configurazione aggiuntiva utilizzando attributi o l'API DbModelBuilder e poi rimuovere il codice che genera questa eccezione **

risposta

4

Entity Framework ha bisogno di usare le entità reale oggetto:

public class HOLContextFactory 
{ 
    public static HOLDbEntities Create() 
    { 
     // default connection string 
     return new HOLDbEntities(); 
    } 

    public static HOLDbEntities CreateQuote() 
    { 
     // specified connection string 
     return new HOLDbEntities ("HOLDbQuoteEntities"); 
    } 
} 

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

Questo è in realtà come ho fatto alla fine. –

1

I' Ho fatto la stessa cosa in uno dei miei progetti. Sto creando mio contesto entità utilizzando metadata=res://*/

Prova questa:

<add name="HOLDbEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 

<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 
Problemi correlati