【发布时间】:2015-06-15 18:01:30
【问题描述】:
我在 Visual Basic 2013、Entity Framework 6.02、Sql server 2008R2 上有一个应用程序。
我有几个相同的数据库。
在设计上,我通过向导创建了与其中之一的连接(例如 MyDB1),并且我已经配置了实体。现在,在运行时,我想让用户可以断开与数据库 MyDB1 的连接并连接到另一个(相同的)数据库,例如 MyDb2。
如何通过代码做到这一点?
谢谢!
【问题讨论】:
我在 Visual Basic 2013、Entity Framework 6.02、Sql server 2008R2 上有一个应用程序。
我有几个相同的数据库。
在设计上,我通过向导创建了与其中之一的连接(例如 MyDB1),并且我已经配置了实体。现在,在运行时,我想让用户可以断开与数据库 MyDB1 的连接并连接到另一个(相同的)数据库,例如 MyDb2。
如何通过代码做到这一点?
谢谢!
【问题讨论】:
如果您通过 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"
【讨论】: