【问题标题】:How to select the database from multiple connection strings based on name using web apis?如何使用 web apis 根据名称从多个连接字符串中选择数据库?
【发布时间】:2021-02-27 12:15:57
【问题描述】:

如何使用 web apis 根据名称从多个连接字符串中选择数据库,以及如何为所有控制器使用相同的连接字符串,而不是在所有控制器中编写数据库选择代码。我正在编写所有控件中的数据库选择代码,我想编写一次并在所有控制器中重用它。使用这些控制器以 xamarin 形式连接到数据库

根据客户端名称选择选择数据库的代码。

 if (clientname.SelectedItem.Text == "Client1")
        {
            connStr = (ConfigurationManager.ConnectionStrings["client_db1"].ConnectionString);
        }
        else if (clientname.SelectedItem.Text == "Client2")
        {
            connStr = (ConfigurationManager.ConnectionStrings["client_db2"].ConnectionString);
        }
        else if (clientname.SelectedItem.Text == "Client3")
        {
            connStr = (ConfigurationManager.ConnectionStrings["client_db3"].ConnectionString);
        }

这是我想在所有控制器中重用的代码,

请帮忙 谢谢

【问题讨论】:

    标签: asp.net api web model-view-controller


    【解决方案1】:

    嗯,网站不知道使用哪个连接。

    因此,您必须再向 Web 方法添加一个参数/值。

    称之为数据库。假设你可以通过 A、B 或 C

    然后在你的代码中:

    MyConnection = GetContstr(DataBaseParmater)

    因此,DataBaseParmater 可以是 A、B 或 C。

    因此,您的 GetConStr 例程会这样做:

    Public Function GetConstrt(strDB As String) As String
    
        Dim strCon As String = ""
    
        Select Case strDB
            Case "A"
                strCon = ConfigurationManager.ConnectionStrings("WebEasy.My.MySettings.DatabaseA").ConnectionString
            Case "B"
                strCon = ConfigurationManager.ConnectionStrings("WebEasy.My.MySettings.DatabaseB").ConnectionString
            Case "C"
                strCon = ConfigurationManager.ConnectionStrings("WebEasy.My.MySettings.DatabaseC").ConnectionString
        End Select
    
        Return strCon
    
    End Function
    

    我想您可以使用应用程序中定义的连接“A”或“B”或“C”,然后执行以下操作:

                strCon = 
    ConfigurationManager.
    ConnectionStrings("WebEasy.My.MySettings.Database" &
    DataBaseContext).ConnectionString
    

    因此,您在设置中设置了 3 或 5 个数据库连接,然后将 A 或 B 或 C 附加到解析为实际数据库连接的连接上下文。

    因此,您的客户端 Web 方法调用必须知道并决定您要使用哪个连接。您当然不会从客户端 Web 方法调用传递或发送连接字符串,但某种上下文(例如数据库连接 A 或 B 或 C 等)似乎是可行的方法。我想你可以在开始时设置一个 session() 值来确定数据库的选择,然后再有类似上面的东西来选择给定的连接。

    所以这里采用数据库上下文的概念。使用 1、2、3 或 A、B 或其他。 因此,所有代码都将使用函数 GetStrCon(databaseContext) 来解析并选择正确的连接字符串。我想您甚至可以使用连接创建一个表,从而让 getConstr() 函数从该表中提取一行,并以这种方式获取连接字符串。所以真的只有几个例程。

    然而,关键是某种“上下文”值,因此网络调用者必须始终为服务器端代码传递该上下文,然后解析要使用的连接字符串。希望您不要使用数据集设计器(或者现在使用更新的实体框架,因为这会带来更多问题)。

    【讨论】:

    • 我已经更新了查询并添加了代码,请帮助
    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2023-03-17
    • 2020-12-11
    • 2014-08-28
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多