我们有两个数据库DEV和STAGING。它们大部分是相同的。我在Web.Config中有一个应用程序设置标签,称之为“模式”,以及两个连接字符串条目。LinqToSql dbml动态切换connectionstring
如果mode = DEV我想使用ConnectionString 1,否则使用ConnectionString 2.这在应用程序的某些部分工作正常,但dbml似乎不会切换连接字符串。 我使用这个功能的实用工具类
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的属性,我看到它是硬编码到临时ConnectionString的,但我想我是通过改变designer.vb的DBML这样
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
overridding这有什么我可以做的,以强制dbml使用正确的连接字符串基于Web.config条目?
我不选择使用VB。我是一个C#人。这个特定的应用程序在VB.NET和.NET 1.1中编码。我们建议用C#重写它,并且由于时间限制被击落。 :(感谢您的回答。 – Hcabnettek 2009-07-10 19:36:48