2012-09-30 8 views
6

Utilicé SQL Server CE 4.0 en mi aplicación de Windows y uso Entity Framework para crear un modelo de la misma.Cómo utilizar la cadena de conexión dinámica para SQL Server CE?

Funciona bien, pero mi problema es que no tiene un constructor para cambiar la cadena de conexión y, de forma predeterminada, lee la cadena de conexión del archivo app.config.

using (var Context = new MyEntitiesModel(//has no constructor)) 
{ 
     ... 
} 

puedo crear una cadena de conexión dinámica y

using (var Context = new MyEntitiesModel()) 
    { 
     Context.Database.Connection.ConnectionString = entityConnection.ConnectionString; 
    } 

Funciona bien por este camino, pero si quito otra cadena de conexión en app.config archivo que me dio esto.

error = invalid metasource ....

porque el constructor por defecto usa

Como puedo manejarlo?

+0

¿No hay un constructor que tome una DbConnection como parámetro? –

+0

sí, no hay constructores para cambiar la cadena de conexión – motevalizadeh

+1

¿no puede simplemente dejarlo en una cadena de conexión ficticia en el archivo app.config? – Seph

Respuesta

2

Crea tu propio constructor. MyEntitiesModel es una clase parcial, puede agregar su propia parte parcial de la clase y agregar un constructor que acepte una cadena de conexión.

public partial class MyEntitiesModel { 
    public MyEntitiesModel(string connectionString) : base(connectionString) { } 
} 
+0

error: el código generado con las plantillas T4 para Database First y Model First development puede no funcionar correctamente si se usa en el modo Code First. Para continuar utilizando Database First o Model First, asegúrese de que la cadena de conexión de Entity Framework esté especificada en el archivo de configuración de la aplicación en ejecución. Para utilizar estas clases, que se generaron desde Database First o Model First, con Code First agrega cualquier configuración adicional utilizando atributos o la API de DbModelBuilder y luego elimina el código que arroja esta excepción. – motevalizadeh

+0

¿Cómo se ve la cadena de conexión? –

+0

"data source = | DataDirectory | \\ MyDb.sdf; password = xxx; persist security info = True"; – motevalizadeh

1

Im usando DbContext. Hay varios constructores de sobrecarga, por ejemplo: ObjectContext también tiene un conjunto similar de sobrecargas de constructor.

System.Data.Entity DbContext ejemplo

Context = new BosMasterEntities(nameOrConnectionString: nameOrConnectionString); 

Puede conectarse a múltiples Dbs al mismo tiempo.

Cuestiones relacionadas