2013-02-26 12 views
5

Obecnie próbuję użyć tego samego DbContext (mam dwie bazy danych o identycznej strukturze) w mojej aplikacji. Nie jestem do końca pewien, co robię źle, ale oto mój obecny kod - mam nadzieję, że powinno być całkiem oczywiste, co próbuję zrobić. Używam najpierw bazy danych EF (której błąd na dole nie sugeruje).Entity Framework - używanie tego samego DbContext z różnymi ciągami połączeń

Mój kod fabryczny kontekst:

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 ciągów połączenia:

<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 

Błąd Dostaję przy użyciu "HOLDbQuoteEntities":

kod wygenerowany przy użyciu Szablony T4 dla bazy danych First i Modelu Pierwsze rozwinięcie może nie działać poprawnie, jeśli jest używane w Code First m oda. Aby kontynuować korzystanie z Database First lub Model First, należy upewnić się, że ciąg połączenia Entit został określony w pliku konfiguracyjnym aplikacji wykonującej numer . Aby skorzystać z tych klas, które zostały wygenerowane z Database pierwszej lub modelu pierwsze, kod najpierw dodać żadnej dodatkowej konfiguracji za pomocą atrybutów lub API DbModelBuilder a następnie usunąć kod, który generuje ten wyjątek **

Odpowiedz

4

Entity Framework musi użyć rzeczywistych podmiotów obiektu:

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

To jest rzeczywiście, jak to zrobiłem w końcu. –

1

I” zrobiłem to samo w jednym z moich projektów. Tworzę moje kontekstu podmiot korzystający metadata=res://*/

Spróbuj tego:

<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" /> 
Powiązane problemy