Cambiar usuario y password de la cadena de conexión en EF

En una aplicación donde usas ADO.NET Entity Framework como acceso a datos, en el paso donde se agrega una entidad nueva en el proyecto y se usa autenticación de SQL Server, siempre se nos pregunta si almacenaremos la información de conexión en el archivo de configuración o si la pasaremos por medio de la aplicación:

click para ver más grande

Esta es la mejor práctica, seleccionar “No, exclude sensitive data from the connection string. I will set it in my application” que palabras más, palabras menos, significa algo así como “No, excluir datos sensibles de la cadena de conexión. La asignaré desde mi aplicación”. Y es que en un mundo ideal tu aplicación se ejecutará desde un entorno donde la máquina pertenezca a un directorio activo (Active Directory) con todas las credenciales dadas desde Windows para evitar errores y malentendidos. Pero en el mundo real esto no siempre es así y quizás en la misma PC donde se ejecutará la aplicación varios usuarios con distintos tipos de perfil usarán la aplicación por lo que debes pedir sus nombres de usuario y contraseña de SQL Server para acceder al programa. Entonces ¿cómo cambiamos los datos de la cadena de conexión?

Supongamos que tenemos una forma de Login con dos cajas de texto para el usuario y contraseña y estos se leen en unas variables sUser y sPass respectivamente, vamos a tener esto:

 




NorthwindEntities ne = new NorthwindEntities();

SqlConnectionStringBuilder sb =
new SqlConnectionStringBuilder(
((EntityConnection)ne.Connection).StoreConnection.ConnectionString
);
sb.IntegratedSecurity = false;
sb.UserID = sUser;
sb.Password = sPass;

((EntityConnection)ne.Connection).StoreConnection.ConnectionString = sb.ConnectionString;

 


NorthwindEntities es como nombramos el modelo de datos desde el Entity Data Model Wizard. Y aquí inicializamos la conexión auxiliándonos de la clase SqlConnectionStringBuilder para mayor comodidad. Después de eso, simplemente lo asignamos por medio del ConnectionString. Toma en cuenta los castings de los que hacemos uso con (EntityConnection) para poder tener acceso a la propiedad StoreConnection que es donde la propiedad ConnectionString está disponible y que podemos actualizar.


Basado en ADO.NET Entity Framework: Modify EntityConnection connection string values at runtime

ADO.NET Entity Framework en unos cuantos pasos

Gracias a una invitación de Jesús Bosch de la Universitat Oberta de Catalunya tuve el privilegio de presentarles este tema. Desgraciadamente una metida de pata mía impidió que la plática fuera en vivo, pero aquí lo que pude rescatar de esa memorable mañana de sábado lluvioso.


 


ADO.NET Entity Framework en pocos pasos from Gabriel Flores on Vimeo.


Presentación para la UOC.

http://uoc.dotnetclubs.com