我們有兩個數據庫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