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

时间:2018-01-22 08:34:10

标签: 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 - 如何在运行项目的不同视图中切换两个连接。

有关更多解释,您可以看到我的模型用于创建MySQL连接,如下所示:(在发布视图连接后必须连接这些字段在视图中设置)

 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; }
}

1 个答案:

答案 0 :(得分:0)

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

我建议你指定2个(或多达你需要的)连接字符串并使用多个上下文类,每个类用于"通信"与其他DB。

示例:

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")
    {
         //...
    }
    //...
}

在代码中使用两个上下文类,因此您可以与两个DB进行交互。

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

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

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

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

相关问题