Cambié mi DAL de usar LINQ a Entity Framework. Debido a que mi aplicación se conecta a diferentes bases de datos dependiendo del usuario actual, necesito crear dinámicamente el DataContext en tiempo de ejecución y pasar la cadena de conexión apropiada. Sin embargo, cuando intenté crear programáticamente una conexión de Entity Framework utilizando mi cadena de conexión anterior, la conexión falló. Se quejó de que no reconoció la clave en la cadena de conexión, "servidor" para ser exactos.¿Por qué una conexión de Entity Framework requiere una propiedad de metadatos?
descubrí que necesitaba hacer esto con el fin de obtener la conexión de Entity Framework para trabajar:
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());
¿Por qué es esto?
¿Para qué sirve la propiedad Metadata?
¿Va a ser un problema que siempre sea el mismo para múltiples conexiones diferentes?
¿Cuál debería ser?
¿Hay alguna forma de evitar esto?
¡Gracias de antemano!
Actualización 1: Gracias por la actualización Randolpho, pero ...
La razón por la que estoy teniendo este problema, es que no puedo almacenar las cadenas de conexión en un archivo de configuración. La cadena de conexión se determina dinámicamente en tiempo de ejecución mediante la cual el usuario se conecta.
Aquí es mi escenario exacto:
Si el usuario A se conecta, la aplicación extrae datos de la base de datos A. Si el usuario B está conectando, la aplicación extrae datos de la base de datos B.
Las cadenas de conexión se almacenan en un principal base de datos, y el número es potencialmente ilimitado. Cada vez que agrego un usuario, no quiero tener que ingresar al web.config, ¡sin mencionar el hecho de que eventualmente se volverá ENORME!
Dado que las asignaciones son las mismas para cada conexión, y no cambiará, no debería importar que use los mismos metadatos para todas, ¿verdad? –
sí, es correcto – user230910