【问题标题】:Change database name at runtime在运行时更改数据库名称
【发布时间】:2015-06-15 18:01:30
【问题描述】:

我在 Visual Basic 2013、Entity Framework 6.02、Sql server 2008R2 上有一个应用程序。

我有几个相同的数据库。

在设计上,我通过向导创建了与其中之一的连接(例如 MyDB1),并且我已经配置了实体。现在,在运行时,我想让用户可以断开与数据库 MyDB1 的连接并连接到另一个(相同的)数据库,例如 MyDb2。

如何通过代码做到这一点?

谢谢!

【问题讨论】:

    标签: vb.net entity-framework


    【解决方案1】:

    如果您通过 SQL 列出数据库,它将返回可能不适合您的应用程序的数据库,因为它会提供服务器上的数据库列表,而这可能不是您想要的。我在一个类中对不同的数据库选项进行硬编码,并使用它来设置我的选项。我的所有数据库配置和我在下面列出的关键部分都有一个类

    Public Class MyDBClass
      Public Enum DBModeEnum
        Live = 0
        Training = 1
        Dev = 2
      End Enum
    
    Public Function **GetDBString**(DBMode As DBModeEnum) As String
        If DBMode = DBModeEnum.Live Then
            Return "Server=ServerA;Database=DB1;Trusted_Connection=true;"
        ElseIf DBMode = DBModeEnum.Training Then
            Return "Server=ServerB;Database=DB1;Trusted_Connection=true;"
        Else
            Return "Server=ServerB;Database=DB2;Trusted_Connection=true;"
        End If
    End Function
    End Class
    

    我在运行时选择数据库并将其保存在 My.Resources .CurrentDB 中。我调用函数 GetDBString 来设置连接字符串,我通过 My.Resources .CurrentDB 来识别数据库。

    Dim connection = New SqlClient.SqlConnection
        connection.ConnectionString = **GetDBString**(My.Resources .CurrentDB)
        Dim cmd = connection.CreateCommand
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "base_Read_Case"
    

    【讨论】:

    • 问题是我使用的是实体框架,我已经使用向导一步一步创建了模型,并且连接字符串保存到app.config文件中。我没有在运行时手动创建连接字符串,因为这是从该文件中读取的。
    猜你喜欢
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2018-07-09
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多