mysql - 首先在MVC数据库运行时设置mysql连接字符串

标签 mysql asp.net-mvc database-connection ef-database-first

我有一个带有一个 SQL 连接字符串的 MVC 项目(首先是数据库)。为了应用此连接,我使用这种方式并且连接正确:
http://www.c-sharpcorner.com/UploadFile/8a67c0/database-first-approach-with-Asp-Net-mvc-step-by-step-part-2/

但是,我的问题是在运行时与 MySQL 数据库应用另一个连接。事实上,我有几个需要 SQL 连接的表单和几个需要 MySQL 连接的表单。另一方面,MySQL 连接必须设置为运行时间。

所以,我有两个重要问题:

1-如何在运行时设置 MySQL 连接字符串(在关联的我的模型中)
2-如何在运行项目的不同 View 中的两个连接之间切换。

有关更多说明,您可以查看我创建 MySQL 连接的模型,如下所示:(这些字段在 View 中设置,发布后必须连接 View 连接)

 public partial class BPMEngine
{
    public int EngID { get; set; }
    public string EngName { get; set; }
    public string DBServer { get; set; }
    public string DBName { get; set; }
    public string DBUserName { get; set; }
    public string DBPass { get; set; }
    public string EngURL { get; set; }
    public string AppRootPath { get; set; }
}

最佳答案

在应用程序设置中指定连接字符串,并在上下文类中传递连接字符串。

我建议您指定 2 个(或您需要的数量)连接字符串并使用多个上下文类,每个类用于与其他数据库“通信”。

示例:

App.config中:

<connectionStrings>
  <add name="conn_str_number_1" .../>
  <add name="conn_str_number_2" .../>
</connectionStrings>

上下文类:

class MyContext1 : DbContext
{
    public MyContext() : base("name=conn_str_number_1")
    {
         //...
    }
    //...
}

另一个:

class MyContext2 : DbContext
{
    public MyContext() : base("name=conn_str_number_2")
    {
         //...
    }
    //...
}

并且在代码中使用两个上下文类,因此您可以与两个数据库交互。

要在运行时切换连接字符串,您可以使用contextClass.Database.Connection.ConnectionString属性。 More info about it here.

在那里,我们还可以读到:DbContext 有一个构造函数重载,它接受连接字符串的名称或连接字符串本身。实现您自己的版本并将其传递给基本构造函数:

public class MyDbContext : DbContext
{
    public MyDbContext( string nameOrConnectionString ) 
        : base( nameOrConnectionString )
    {
    }
}

但是您必须在运行程序之前指定所有连接字符串:)

关于mysql - 首先在MVC数据库运行时设置mysql连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48377433/

相关文章:

mysql - 门徒数据大师 : Table records cannot be shown or imported

mysql - 将多个插入查询合并为一个

php - 显示/隐藏具有唯一 SQL ID 值的 DIV

c# - MVC 使用 Html.CheckBoxFor 和可为空的 Bool

Java数据事务性能

mysql - Tomcat6无法连接MySql(驱动没有收到服务器的任何数据包)

php - 找到 0 条记录

mysql - 根据条件将行从一个表迁移到另一个表 [MYSQL]

c# - 无法禁用 Controller 上的验证

c# - 使用 Automapper 将字符串映射到 List<string>,反之亦然