5

Cuando uso de Entity Framework codefirst puedo usar el siguiente código para obtener mi base de datos de cadena de conexión:¿Cómo obtener información de la base de datos con la base de datos de entidad de trabajo primero?

var db = new dbContext(); 
Console.Writeline(db.Database.Connection.ConnectionString); 

Pero cuando lo haga primero la base de datos, base de datos no está disponible. ¿Cómo puedo (desde el código en tiempo de ejecución) obtener la cadena de conexión de la base de datos que está siendo utilizada por el marco de la entidad?

Respuesta

12

El código:

var db = new dbContext(); 
Console.Writeline(db.Database.Connection.ConnectionString); 

obras siempre. Entonces, si creó el modelo de entidad de su base de datos y usó la plantilla DbContext Generator T4, aún puede usarlo.

Si bien se usan API ObjectContext debe llamar a esto:

var connection = context.Connection as EntityConnection; 
if (connection == null) throw new ...; 
var storeConnectionString = connection.StoreConnection.ConnectionString; 
+0

nunca encontré esta solución, así que utiliza para analizar la cadena de consulta (que no está tan bien oculta ;-)). Esto mejoró mucho mi código, ¡gracias! – Tillito

8

... Y las propiedades específicas de cadena de conexión se pueden exponer:

using System.Data.SqlClient; 



    internal static string GetDatabaseName() 
    { 
     using (var _db = new MyProjectEntities()) 
     { 
      return new SqlConnectionStringBuilder(_db.Database.Connection.ConnectionString).InitialCatalog; 
     } 
    } 
Cuestiones relacionadas