entity framework – 使用具有不同连接字符串的相同DbContext

我目前正在尝试在我的应用程序中使用相同的DbContext(我有两个相同结构的数据库)。 我不太确定我做错了什么,但这是我现在的代码 – 希望我应该很清楚我要做的事情。 我正在使用EF Database First(底部的错误似乎没有提示)。

我的上下文工厂代码:

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=" 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=" providerName="System.Data.EntityClient" /> // using diff database - same structure 

使用“HOLDbQuoteEntities”时出错:

如果在Code First模式下使用,使用T4模板为Database First和Model First开发生成的代码可能无法正常工作。 要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串。 要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此exception的代码**

entity framework需要使用实际的实体对象:

 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) { } } } 

我在我的一个项目中做了同样的事情。 我正在使用metadata=res://*/创建我的实体上下文

试试这个: