【发布时间】:2009-07-10 18:55:09
【问题描述】:
我们有两个数据库,DEV 和 STAGING。它们大部分是相同的。我在 Web.Config 中有一个应用设置标签,称之为“模式”,还有两个连接字符串条目。
如果 mode=DEV 我想使用 ConnectionString 1 否则使用 ConnectionString 2。这在应用程序的某些部分工作正常,但 dbml 似乎没有切换连接字符串。 我在 Utilities 类中使用这个函数
Public Function GetConnectionString() As String
Dim connectionStringToGet = String.Empty
Select Case GetCurrentApplicationMode()
Case "DEV"
connectionStringToGet = "Dev"
Case "STAG"
connectionStringToGet = "Staging"
Case "PROD"
connectionStringToGet = "Production"
End Select
Return ConfigurationManager.ConnectionStrings(connectionStringToGet).ConnectionString
End Function
这适用于这个遗留应用程序中的无数存储过程,但 dbml 似乎总是使用暂存连接字符串。
当我查看 dbml 的属性时,我发现它被硬编码为 Staging 连接字符串,但我认为我通过像这样更改 dbml 的 Designer.vb 来覆盖它
Public Sub New()
MyBase.New(Utilities.GetConnectionString(), mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As String)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As System.Data.IDbConnection)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As String, ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
Public Sub New(ByVal connection As System.Data.IDbConnection, ByVal mappingSource As System.Data.Linq.Mapping.MappingSource)
MyBase.New(connection, mappingSource)
OnCreated
End Sub
我能做些什么来强制 dbml 根据 Web.config 条目使用正确的连接字符串吗?
【问题讨论】:
标签: linq-to-sql web-config connection-string