我想在运行时为我的数据库提供连接字符串。我正在使用实体框架。这是我到目前为止所拥有的
class MyClassDBContext:DbContext
{
public MyClassDBContext(string str) : base(str)
{
this.Database.Connection.ConnectionString = str;
}
}
要使用上面的代码,我试过了
//create connection string
EntityConnectionStringBuilder myConn = new EntityConnectionStringBuilder();
myConn.Provider = "System.Data.SqlClient";
myConn.ProviderConnectionString = "user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30";
//inject the connection string at runtime
MyClassDBContext a = new MyClassDBContext(myConn.ToString())
上面的代码给了我一个错误,说“不支持提供者关键字”。为了尝试调试此错误,我尝试了以下
MyClassDBContext a = new MyClassDBContext("metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30")
现在,我收到一条错误消息,提示“不支持元数据关键字”。所以我将代码更改为
MyClassDBContext a = new MyClassDBContext("provider=System.Data.SqlClient;provider connection string=user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30")
现在我收到一条错误消息,提示“不支持提供者关键字”。所以我再次将我的代码更改为
MyClassDBContext a = new MyClassDBContext("user id=xxxx;password=xxxx;server=localhost;database=xxxx;connection timeout=30")
现在它可以工作了!我的问题是:如何在运行时指定提供程序和元数据?看起来只有连接字符串被接受。我正在使用 Nuget 的 Entity 4.3.1。
谢谢