Anup
Anup

Reputation: 125

Entity Framework set connection string at runtime

I have been trying to get this work for last couple of days with no success.

This is what I have done so far.

string providerName = "System.Data.SqlClient";
string serverName = serverIPAddress;
string databaseName = myDBName;

SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();

sqlBuilder.DataSource = serverName;
sqlBuilder.InitialCatalog = databaseName;
sqlBuilder.PersistSecurityInfo = true;
sqlBuilder.MultipleActiveResultSets = true;
sqlBuilder.UserID = "sa";
sqlBuilder.Password = saPassword;

string providerString = sqlBuilder.ToString();

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();

entityBuilder.Provider = providerName;

entityBuilder.ProviderConnectionString = providerString;

entityBuilder.Metadata = "res://*/TUModel.myModel.csdl|res://*/TUModel.myModel.ssdl|res://*/TUModel.myModel.msl";            
myEntities ctx = new myEntities(entityBuilder.ConnectionString);

The constructor in entity class look like

public myEntities(string connectionString) : base("name=myEntities")
{
}

When I run there is no error. However if I delete 'myEntities' connection string from app.config, then it throws exception. If I leave it as it is then it ignores the connection string in the code and use the one in app.config.

Any help would be greatly appreciated.

Upvotes: 0

Views: 293

Answers (1)

DavidG
DavidG

Reputation: 118937

Your context constructor isn't passing your connection string in, instead it is passing through a fixed value of name=myEntities. Change it to this:

public myEntities(string connectionString) : base(connectionString)
{
}

Upvotes: 2

Related Questions