En esta ocasión me puse a modificar el código para que al subir los datos a producción no se tenga que estar recompilando porque falló una u otra cadena de conexión o que la ip no corresponde o detallitos como esos.
Primero veamos la conexión a la base de datos, muchas veces por la facilidad y rápidez de copiar y pegar no nos damos cuenta que nuestro código se está duplicando considerablemente y para colmo no nos interesa darle el mentado refactoring. En el caso de las cadenas de conexión de bases de datos bien podemos usar el archivo de configuración que brinda el .NET (web.config).
Es muy simple, unicamente se tiene que definir lo siguiente:
<appsettings>
...
<add key="keyName" value="Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=MiBase;Data Source=MiServer;"></add>
...
</appsettings>
...
<add key="keyName" value="Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=MiBase;Data Source=MiServer;"></add>
...
</appsettings>
string _dbConnection = ConfigurationSettings.AppSettings["keyName"];
Otro problema que puede surgir es que constantemente tengas que estar cambiando la URL de la máquina de pruebas a la de producción. Para esto he encontrado una forma simple de hacerlo y claro si alguién más lo ha hecho de una manera diferente por favor comentalo para aprender
// Se obtiene el nombre de la máquina
string hostName = System.Net.Dns.GetHostName();
// Se obtiene la ip de un array porque puede tener más de una ip asignada
string stringIP = System.Net.Dns.GetHostEntry(hostName).AddressList[0].ToString();
string hostName = System.Net.Dns.GetHostName();
// Se obtiene la ip de un array porque puede tener más de una ip asignada
string stringIP = System.Net.Dns.GetHostEntry(hostName).AddressList[0].ToString();
Simple, ¿o no?, que nos cuesta darle una pulidita a ese código y evitar unas cuantas líneas que no nos serviran de nada. Ya si andas medio inspirado puedes generar una clasesilla y poner tus diversas configuraciones para conectarte a las bases de datos.
Si, también existen FrameWorks dedicados a eso pero esa es otra historia.
Leave a Comment