Changing the connection string from the class library in the main application at run time

You can change the connection string at runtime like this. You set the connection string setting for the record as a separate property inside the MySettings class:

Partial Friend NotInheritable Class MySettings
    Public WriteOnly Property RunTimeConnectionString()
        Set(ByVal value)
            My.Settings("MyConnectionString") = value
        End Set
    End Property
End Class

Then, in some place, when the application is initialized (before using any table adapters of typed datasets), write something like:

My.Settings.RunTimeConnectionString = My.Settings.ProductionConnectionString

Where ProductionConnectionString is a simple String parameter. This is a User Scope parameter, so each user can change it (assigning it a value similar to the code above) and save it by calling My.Settings.Save ()

This code works well for connection strings that were originally created in the main project and stored in it (app.config file).

app.config : MyApp.MySettings.MyConnectionString.

, app.config , , app.config - , .

, , , - . app.config. , : MyClassLibrary.My.MySettings.MyConnectionString.

, , - ?

+3
3

, .

( ) () :

Public Class MySettingsChanger
    Public Shared Sub SetConnectionString(ByVal cnnString As String)
        My.Settings.RunTimeConnectionString = cnnString
    End Sub
End Class

MySettings ( ) , :

Namespace My
    Partial Friend NotInheritable Class MySettings
        Public WriteOnly Property RunTimeConnectionString()
            Set(ByVal value)
                My.Settings("MyConnectionString") = value
            End Set
        End Property
    End Class
End Namespace

, . ( , ProjectNamespace.MySettings.ConnectionName). , , .

+1

, . , , . , , , , . .

    Dim configLocation As String = Reflection.Assembly.GetExecutingAssembly().Location
    Dim config As Configuration.Configuration = Configuration.ConfigurationManager.OpenExeConfiguration(configLocation)
    config.ConnectionStrings.ConnectionStrings.Clear()
    For i As Integer = 0 To Configuration.ConfigurationManager.ConnectionStrings.Count - 1
        Dim connection As New Configuration.ConnectionStringSettings(Configuration.ConfigurationManager.ConnectionStrings(i).Name, My.Settings.ProductionConnectionString)
        connection.ProviderName = Configuration.ConfigurationManager.ConnectionStrings(i).ProviderName
        config.ConnectionStrings.ConnectionStrings.Add(connection)
    Next
    config.Save()

, .

0

. , , . , ( ), .

The only option is to either restart the application or redo the application pool if the web application. In addition, you have to collapse yourself.

I did everything I could: -)

0
source

All Articles