Nous avons deux bases de données, DEV et STAGING. Ils sont pour la plupart identiques. J'ai une étiquette de paramètres d'application dans le Web.Config appelez-le "mode", et deux entrées de chaîne de connexion. Si mode = DEV Je veux utiliser ConnectionString 1 sinon utiliser ConnectionString 2. Cela fonctionne très bien dans certaines parties de l'application, mais le dbml ne semble pas changer les chaînes de connexion. J'utilise cette fonction dans une classe UtilitairesLinqToSql dbml bascule dynamiquement la chaîne de connexion
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
Cela fonctionne pour la myriade de procs stockées dans cette application héritée, mais le dbml, semble toujours utiliser la chaîne de connexion de stockage intermédiaire.
Quand je regarde les propriétés du dbml, je vois qu'il est codé en dur à la ConnectionString Mise en scène, mais je pensais que j'overridding en changeant la designer.vb pour le dbml comme celui-ci
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
Y a-t-il quelque chose que je puisse faire pour forcer le dbml à utiliser la bonne connectiontring basée sur l'entrée Web.config?
Je n'utilise pas VB par choix. Je suis un gars C#. Cette application particulière a été codée dans VB.NET et .NET 1.1. Nous avons proposé de le réécrire en C# et en raison des contraintes de temps qui ont été abattu. :(Merci pour votre réponse – Hcabnettek
C'est comme ça que je le fais – mattruma
Cela fonctionne superbe !!! Je suis allé les méthodes d'usine et mis à jour le tout à Dim db comme myDataContext = myDataContext.Create Je suppose partagé est similaire à C# Static Comme la méthode apparaît dans Intellisense, merci pour la solution géniale !! – Hcabnettek