2011-07-05 14 views
9

uso de Entity Framework y necesito conseguir mi cadena de conexión para que pueda construir un contexto.Obtener la cadena de conexión para el marco de la entidad con la plantilla POCO

estoy usando la plantilla POCO. Mi objeto de contexto tiene:

string ConnectionString = "name=MyAppConfigConnectionStringPropertyHere" 

Así que cuando intento simplemente construir mi contexto que dice

"La conexión con nombre especificado no se encontró en la configuración, no está destinado a ser usado con el EntityClient proveedor, o no es válido "

Vi en este answer que indicó que hay un método GetConnectionString(). Pero Google no me ha llevado a la referencia que necesito agregar para obtener ese método (no está en mi proyecto por defecto).

Por lo tanto, no se me ocurre que yo soy el primero que quiere conseguir una cadena de conexión para el marco de la entidad utilizando las plantillas POCO. ¿Cómo han hecho esto otros? Creo que puedo leer todo el archivo app.config y analizarlo. Pero parece que no debería ser tan difícil.

Alguna pista sería grande!

Respuesta

1

debe haber un elemento connectionString presente en el web.config que se especifique el nombre utilizado en el contexto:

<configuration> 
    <connectionStrings> 
      <add name="MyAppConfigConnectionStringPropertyHere" 
       providerName="System.Data.SqlClient" 
       connectionString="Data Source...." /> 
    </connectionStrings> 
</configuration> 
+0

estoy usando un marco de la entidad en un proyecto de biblioteca de clases. No tengo un web.config. Toda la materia cadena de conexión está en App.confg y se ve de la misma familia: 'ConnectionString = "metadatos = res: //*/MyDataModel.csdl | .... 'El nombre del proveedor es' providerName =" System.Data.EntityClient "' – Vaccano

+0

hace esto connectionString tiene un nombre-atributo? debe coincidir con la conexión de cadena real pasó al contexto, que has mencionado. –

+0

Sí, hay una propiedad de nombre. es lo mismo que la parte después de '' name = en el código de la propiedad de la cadena de conexión. yo simplemente no sé cómo utilizar eso para cargar la cadena de conexión real de App.config y utilizarlo en el código. probé 'ConfigurationManager.ConnectionStrings [ "MyAppConfigConnectionStringPropertyHere"]. ConnectionString' y falla. Cuando cavo en la lista de cadenas de conexión (utilizando el depurador) mi cadena de conexión no está ahí. (que sólo tiene una conexión con el servidor SQL localhost). – Vaccano

2

me sale la conexión DB como esto

var connection = (SqlConnection)_context.Database.Connection; 

Luego de la conexión obtienes el ConnectionString y otra información que necesitas

+1

Esto no parece funcionar si la cadena de conexión contiene una contraseña (la contraseña no está en la cadena). – Trisped

8

Para las personas que no usan EF 4.1 aquí está la manera más fácil de hacerlo que yo sepa:

using System.Data.EntityClient; 

public static string GetConnectionString(ObjectContext context) 
{ 
    return ((EntityConnection)context.Connection).StoreConnection.ConnectionString; 
} 
25

Para entity framework 6.0, el siguiente código muestra ConnectionString actual.

context.Database.Connection.ConnectionString 
1

Para EF Core, el uso:

context.Database.GetDbConnection().ConnectionString; 
Cuestiones relacionadas