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)
{
}
}