Get the Entity Framework Connection String

We use Entity Framework 5, but have a requirement to ALSO use a normal database connection from the application for some custom SQL we need to perform.

So, I am creating a DatabaseAccess class which handles this connection. Is there a way that I can populate the connection string, by checking the Entity Framework connection string?

So:

SqlConnection cnn;
connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password"

Can I build that from checking Entity Framework?


Solution 1:

You can get the connectionstring used by EF by using the following:

MyDbContext.Database.Connection.ConnectionString

Or as mark says you can initalise the context with a sqlconnection

Solution 2:

Here's how to get the connection string in EF 5, EF 6 and EF Core 1/EF 7.

//Entity Framework 5
myContext.Database.Connection.ConnectionString
//Entity Framework 6
myContext.Database.Connection.ConnectionString
//Entity Framework Core 1
myContext.Database.GetDbConnection().ConnectionString

For more details see - http://nodogmablog.bryanhogan.net/2016/04/entity-framework-checking-the-connection-string-of-your-context/

Solution 3:

Yes you can.

See here for 3 options.

1 - use separate connection string for each

2 - extract it from your entity object (this is what i think you want)

3 - use the entity object to execute your custom SQL

Here's how to do nr 2:

using System.Data.EntityClient;
using System.Data.SqlClient;
...
private string GetADOConnectionString()
{
    SalesSyncEntities ctx = new SalesSyncEntities(); //create your entity object here
    EntityConnection ec = (EntityConnection)ctx.Connection;
    SqlConnection sc = (SqlConnection)ec.StoreConnection; //get the SQLConnection that your entity object would use
    string adoConnStr = sc.ConnectionString;
    return adoConnStr;
}

Solution 4:

even in EF3 you can use EntityConnectionStringBuilder.

EntityConnectionStringBuilder conn = 
    new EntityConnectionStringBuilder(DBEntities.dbConnection);
SqlConnection s = new SqlConnection(conn.ProviderConnectionString);