Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在实体框架中更改数据库名称_C#_Mysql_Entity Framework_Connection String - Fatal编程技术网

C# 如何在实体框架中更改数据库名称

C# 如何在实体框架中更改数据库名称,c#,mysql,entity-framework,connection-string,C#,Mysql,Entity Framework,Connection String,我正在试图找到一种方法来更改我的web.config和我的上下文中的数据库名称。除了数据库名称之外,我的连接字符串中没有其他信息更改 public APIContext(string dbname = "MyFirstDB") : base("OriginalContext") { this.Database.Connection.ConnectionString = this.Database.Connection.ConnectionString.Replace("MyFirs

我正在试图找到一种方法来更改我的
web.config
和我的上下文中的数据库名称。除了数据库名称之外,我的连接字符串中没有其他信息更改

 public APIContext(string dbname = "MyFirstDB") : base("OriginalContext")
 {
     this.Database.Connection.ConnectionString = this.Database.Connection.ConnectionString.Replace("MyFirstDB", dbname);
 }
实现这一点的唯一方法是替换名称,但我可以看到未来几乎没有问题,例如,如果我需要返回或需要指向另一个数据库。使用mysql

任何帮助都将不胜感激

**编辑**

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class APIContext : DbContext
{
    public APIContext() : base("MyContext")
    {
    }

    public void setDatabaseName(string name)
    {
        var currentdatabase = this.Database.Connection.Database;
        this.Database.Connection.ConnectionString = this.Database.Connection.ConnectionString.Replace(currentdatabase, name);
    }
如果我在调用上下文类之前调用“setDatabaseName(string name)”方法,这是否可行

我只是不知道应该在哪里替换数据库名以及如何替换。您尝试过这个吗

public partial class MyModel : DbContext
    {
    public MyModel()
                : base("name=MyModelDataContext") // <-- ConnString Name
            {
            }
}
公共部分类MyModel:DbContext
{
公共MyModel()

:base(“name=MyModelDataContext”)//确定,如果要使用多个字符串,可以这样做

public class MyModel : DbContext
{
    public MyModel () 
      : base(ApplicationParameters.ConnectionStringName)
    {
    }

    public MyModel (string connectionStringName)
      : base(connectionStringName)
    {
    }

}

然后,在web.config中,您可以设置connstring的列表,在代码中,您可以使用第二个构造函数调用其中任何一个。

谢谢Victor,但这正是我感到困惑的地方。我如何用它来更改数据库名称?好的,这里硬编码的是connstring名称,数据库名称在web.config中,在我的示例代码中是Is Initial Catalog=YOURDBNAME因为web.config可以随时编辑,这意味着您的数据库名可以随时更改。再次感谢Victor。但是我更改数据库名的最佳选择是什么?我将web.config切换为使用“Initial Catalog=”“”而不是“Database=“”’。我如何在不使用replace的情况下更改该数据库名称?好的,在您的情况下是的,因为您使用MySql,所以必须使用这种connstring Server=myServerAddress;database=myDataBase;Uid=myUsername;Pwd=myPassword;然后只替换myDataBase,这是dbname应该位于的唯一位置。我已经编辑了上面的上下文类,但我仍然我觉得我走错了路。这行得通吗?你为什么不试试看它是否行得通?我的意思是,在这里提问并等待回答会更快。你为什么不能在配置文件中更改数据库连接字符串中的db名称:
Database=whateverDb
?我试过这个Yoshi。我感到困惑的是如何设置它,以及何时设置它e我需要更改连接字符串中的数据库名称。在我访问初始数据库后,我得到一个数据库名称,并希望切换到该数据库。我不知道如何操作。请看我正在查找的内容。谢谢Yoshi。
public class MyModel : DbContext
{
    public MyModel () 
      : base(ApplicationParameters.ConnectionStringName)
    {
    }

    public MyModel (string connectionStringName)
      : base(connectionStringName)
    {
    }

}