I'm using entity framework 6.02 and Vb.net with Sql server databases.
I have 4 identical databases on 4 different servers.I create Entity through wizard with one of the databases.Now I want to modify the connection string on runtime , to connect with other databases.
This is how I do this change :
This is the connection string on app.config inside visual studio ( I have changed server name with {SERVER} and database name with {DATABASE}
<connectionStrings>
<add name="MyEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source={SERVER};initial catalog={DATABASE};integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
This is the code to change the connection string :
Public Cnstring as string
Dim connstringtemplate As String = System.Configuration.ConfigurationManager.ConnectionStrings(1).ConnectionString.ToString
Cnstring = connstringtemplate.Replace("{DATABASE}", "MyDB2").Replace("{SERVER}","PC2").Tostring
This is My Entity class to accept connection string as parameter :
Partial Public Class MyEntities
Inherits DbContext
Public Sub New(connectionString As String)
If String.IsNullOrWhiteSpace(connectionString) Then
Throw New ArgumentNullException("connectionString")
End If
Database.Connection.ConnectionString = connectionString
End Sub
This is Entity declaration :
context = New MyEntities(cnstring)
But now on runtime i get an error on the line
Database.Connection.ConnectionString = connectionString
An unhandled exception of type 'System.ArgumentException' occurred in System.Data.dll
Additional information: Keyword not supported: 'metadata'.
What's wrong with this code ?
Thank you !