2013-02-26 75 views
5

我目前正在嘗試在我的應用程序中使用相同的DbContext(我有兩個數據庫,具有相同的結構)。我不太確定我做錯了什麼,但是這裏是我目前的代碼 - 希望這應該是非常明顯的我想要做的。我使用EF數據庫優先(這在底部的錯誤似乎不建議)。實體框架 - 使用相同的DbContext與不同的連接字符串

我的上下文工廠代碼:

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文件的連接字符串:

<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 

錯誤使用 「HOLDbQuoteEntities」 當我得到:使用產生的

代碼用於Database First和Model的T4模板 如果在Code First m中使用,則第一次開發可能無法正確工作頌。 要繼續使用Database First或Model First,請確保在執行應用程序的配置文件 中指定了實體 框架連接字符串。使用這些類,從 數據庫優先或模型首先生成的,具有代碼優先使用屬性或DbModelBuilder API添加任何附加 配置,然後 移除引發此異常**

回答

4

實體框架需要用實際的實體對象:

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

這其實是我到底是怎麼做的。 – 2013-04-02 10:56:25

1

I」的代碼我在我的一個項目中做了同樣的事情。我創建使用metadata=res://*/

試試這個我的實體上下文:

<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" /> 
相關問題