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);