DEVとSTAGINGという2つのデータベースがあります。それらはほとんど同じです。私はWeb.Configに "モード"と2つの接続文字列を呼び出すアプリケーション設定タグを持っています。LinqToSql dbml動的に接続する接続文字列
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
を、この機能を使用しています。これは、このレガシーアプリで保存されprocsの無数のために動作しますが、DBMLは、常にステージング接続文字列を使用しているようです。
私はDBMLのプロパティを表示すると、私はそれは難しいステージングれたconnectionStringにコード化されていることが分かりますが、私はこの
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ためdesigner.vbを変更することでこれをオーバーライドすると思いましたWeb.configエントリに基づいて正しい接続文字列を使用するようにdbmlを強制するためにできることはありますか?
VBでは選択肢を使用しません。私はC#の男です。この特定のアプリケーションは、VB.NETと.NET 1.1でコード化されています。私たちはC#でそれを書き直すことを提案しました。あなたの答えをありがとう – Hcabnettek
これは私がそれを行う方法です – mattruma
これは素晴らしいです!!!私は工場のメソッドを行って、すべてのDimデータベースをmyDataContext = myDataContext.Createとして更新しました 私は共有がC#Static – Hcabnettek