c# - password - entity framework tutorial español
Cadena de conexión del proveedor desde Entity Framework (1)
Si está utilizando el modelo de datos de contexto de objeto (con el archivo EDMX), durante su creación es posible que desee especificar la cadena de conexión dentro de su archivo de configuración.
Desafortunadamente, la cadena de conexión no es la cadena de conexión común, ya que contiene algunas ... cosas necesarias para las conexiones de entidad. Ejemplo con conexión MySql:
<add name="MyDbEntities" connectionString="metadata=res://*/Namespace.MyDb.csdl|res://*/Namespace.MyDb.ssdl|res://*/Namespace.MyDb.msl;provider=MySql.Data.MySqlClient;provider connection string="server=172.17.17.154;User Id=user;password=password;Persist Security Info=True;database=MyDatabase;Convert Zero Datetime=true"" providerName="System.Data.EntityClient" />
El problema que tengo es que esta cadena de conexión contiene la cadena de conexión del proveedor en el parámetro "cadena de conexión del proveedor".
Por una razón específica, necesito crear una nueva MySqlConnection, no relacionada con el modelo de entidad. Para crear MySqlConnection, necesito proporcionarle la cadena de conexión mysql, que es la cadena de conexión del proveedor para el modelo de entidad y sé que la cadena de conexión que necesito es siempre la misma cadena de conexión para el modelo de entidad.
Pero, ¿cómo obtengo la cadena de conexión del proveedor de manera programática? Me quedé atascado con la exploración de la instancia del modelo sin éxito ...
El seguimiento:
ModelInstance.Connection.ConnectionString
contiene algo como "nombre = TestBotEntities", ni siquiera la cadena de conexión completa. Así que intenté:
ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString
pero ese contiene toda la cadena de conexión de la entidad y simplemente no sé cómo analizarla, cómo obtener solo la cadena de conexión del proveedor.
Resulta que hay dos maneras.
Podría analizar la cadena de conexión de la entidad a través de EntityConnectionStringBuilder:
string entityConnectionString = ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString;
string providerConnectionString = new EntityConnectionStringBuilder(entityConnectionString).ProviderConnectionString;
... o si tengo una instancia de modelo específica disponible, puedo obtenerla desde aquí.
((System.Data.EntityClient.EntityConnection)ModelInstance.Connection).StoreConnection.ConnectionString;