如何以编程方式更改数据库连接c#Entity Framework

时间:2014-03-13 17:02:42

标签: c# entity-framework database-connection web.config-transform

我已经构建了我的项目,并将数据库连接命名为“VMaxEntities”

连接字符串存在于web.config中。

我有另一个连接字符串“Development_VMaxEntities”

每当我调用db时,我都使用代码using (VMaxEntities db = new VMaxEntities())

这叫:

public partial class VMaxEntities : DbContext { public VMaxEntities() : base("name=VMaxEntities") { }

我想要做的是连接到开发数据库而不是实时数据库,如果当前URI包含localhost。

所以 - 感谢cgotberg在下面给出的答案,这是我以前的工作:(请注意,我在这里添加密码而不是在web.config中)

 public VMaxEntities()
        : base("name=Secure_VMaxEntities")
    {
        if (System.Web.HttpContext.Current.Request.Url.Host == "localhost")
        {
            var connectionString = this.Database.Connection.ConnectionString + ";password=***********";
            this.Database.Connection.ConnectionString = connectionString.Replace("catalog=VMax", "catalog=DEV_VMax");
        }
        else
        {
            this.Database.Connection.ConnectionString += ";password=************";
        }
    }

1 个答案:

答案 0 :(得分:1)

我过去做过类似的事情

using(var db = new VMaxEntities())
{
   var connectionString = context.Database.Connection.ConnectionString;
   var datasource = context.Database.Connection.DataSource;
   var databaseServer = "yourDevDatabaseServerName"        

   db.Database.Connection.ConnectionString = connectionString.Replace(datasource, databaseServer);
}