我使用Entity Framework开发了Asp.net应用程序,现在我需要在运行时更改实体连接字符串。我尝试了以下方式。
public class DataLayer(){
static DataLayer()
{
((EntityConnection)_dbEntity.Connection).StoreConnection.ConnectionString = GetConnectionString();
//GetConnectonString() returns "user id=xxxx;password=xxxx;database=xxxx;server=xxx.xxx.xx.xx"
}
static DBContext _dbEntity = new DBContext();
//other codes
}
我也检查了以下链接。我无法改变它。
http://msdn.microsoft.com/en-us/library/bb738533(v=vs.90).aspx
答案 0 :(得分:2)
您无法更改现有上下文的连接字符串。如果要在运行时控制连接字符串,则必须将连接字符串传递给DbContext
或ObjectContext
构造函数。
顺便说一下。正如我在评论中提到的那样 - 你不能在ASP.NET中使用静态上下文。你根本不应该使用静态上下文。如果您将继续使用静态上下文,您的应用程序将无法正常工作。
答案 1 :(得分:0)
最后我得到了答案。我将这个dbcontext应用于grid的Entity数据源。因此,它在运行时创建了上下文,它已被修复。所以我改变了那个。
protected void EntityDataSource1_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
{
var dp=new DBContext();
e.Context = dp;
}