When I use Entity Framework codefirst I can use the following code to get my database connection string:
var db = new dbContext();
Console.Writeline(db.Database.Connection.ConnectionString);
But when I do database first, Database is not available. How do I (from code at runtime) go about getting the database connection string that is being used by entity framework?
Step 1 − Let's create a new console project with DatabaseFirstDemo name. Step 2 − To create the model, first right-click on your console project in solution explorer and select Add → New Items… Step 3 − Select ADO.NET Entity Data Model from middle pane and enter name DatabaseFirstModel in the Name field.
Entity Framework Core uses Language-Integrated Query (LINQ) to query data from the database. LINQ allows you to use C# (or your . NET language of choice) to write strongly typed queries. It uses your derived context and entity classes to reference database objects.
In the Model Browser, right-click the . edmx file and select Update Model from Database. Expand the Tables, Views, and Stored Procedures nodes, and check the objects you want to add to the . edmx file.
The code:
var db = new dbContext();
Console.Writeline(db.Database.Connection.ConnectionString);
works always. So If you created entity model from your database and used DbContext Generator T4 template you can still use it.
If you instead used ObjectContext API you must call this:
var connection = context.Connection as EntityConnection;
if (connection == null) throw new ...;
var storeConnectionString = connection.StoreConnection.ConnectionString;
... And the specific connection string properties can then be exposed:
using System.Data.SqlClient;
internal static string GetDatabaseName()
{
using (var _db = new MyProjectEntities())
{
return new SqlConnectionStringBuilder(_db.Database.Connection.ConnectionString).InitialCatalog;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With