0

我使用实体框架开发了 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

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/8a89a728-6c8d-4734-98cb-11b196ba11fd

4

2 回答 2

2

您不能更改现有上下文的连接字符串。如果要在运行时控制连接字符串,则必须将连接字符串传递给DbContext构造ObjectContext函数。

顺便提一句。正如我在评论中已经提到的那样——你不能在 ASP.NET 中使用静态上下文。您根本不应该使用静态上下文。如果您继续使用静态上下文,您的应用程序将无法正常工作。

于 2012-07-16T08:15:31.510 回答
0

最后我得到了答案。我将此 dbcontext 应用于网格的实体数据源。所以它在运行时创建上下文它是固定的。所以我改变了那个。

 protected void EntityDataSource1_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
    {
        var dp=new DBContext();
        e.Context = dp;
    }
于 2012-07-16T09:13:19.780 回答