Múltiple cadena de conexión en la Web.config de ASP.Net

Una aplicación web en .Net permite agregar múltiple cadena de conexión en la Web.config, simplificando la conexión a múltiples entornos.

Ventajas:

  • Administración de las cadenas de conexión en un solo lugar.
  • Facilita el mantenimiento.
  • Permite la conexión a múltiples entornos (pruebas y producción).

Anteriormente vimos cómo realizar la conexión con una sola cadena de conexión, con un poco más de código podemos administrar más de uno.

Podría interesarte Conexión a base de datos SQL Azure  

Agregar múltiples cadenas de conexión en la Web.config

En el archivo Web.config de una aplicación WebForm colocamos las cadenas de conexión de la siguiente manera:

<configuration>
    <connectionStrings>
        <add name="BDLocal" connectionString="data source=Equipo1\Usuario1;Initial Catalog=BDLocal;Persist Security Info=True;User ID=sa; Password=root" providerName="System.Data.SqlClient" />
        <add name="BDProduccion" connectionString="data source=Equipo1\Usuario1;Initial Catalog=BDProduccion;User Id=sa;Password=root" providerName="System.Data.SqlClient" />
    </connectionStrings>
<configuration>

Entre las etiquetas configuration colocamos las etiquetas que contendrán las cadenas de conexión connectionStrings.

Colocamos todos los datos de conexión a la base de datos dentro de la etiqueta add, con un nombre único.

Podemos agregar más de una cadena de conexión entre las etiquetas connectionStrings, sin embargo, el nombre de cada uno debe ser único.

Agregaremos unas etiquetas más para definir a que base de datos se conectara nuestra aplicación.

Esta función nos evitará estar modificando código C# y mediante un valor numérico definiremos que base de datos estará activo.

<appSettings>
    <add key="BDActivo" value="0" />
</appSettings>

Entre las etiquetas configuration colocamos las etiquetas que contendrán el identificador de la cadena activa appSettings.

Dentro de la etiqueta add colocamos el nombre de la llave y el valor, el valor se asigna de la siguiente manera:

El valor de la cadena de conexión se asigna del primero al último, es decir, DBLocal toma el valor de 0 y BDProduccion toma el valor de 1.

Todo el código quedaría de la siguiente forma:

<configuration>
    <connectionStrings>
        <add name="BDLocal" connectionString="data source=Equipo1\Usuario1;Initial Catalog=BDLocal;Persist Security Info=True;User ID=sa; Password=root" providerName="System.Data.SqlClient" />
        <add name="BDProduccion" connectionString="data source=Equipo1\Usuario1;Initial Catalog=BDProduccion;User Id=sa;Password=root" providerName="System.Data.SqlClient" />
    </connectionStrings>
<configuration>
<appSettings>
    <add key="BDActivo" value="0" />
</appSettings>

Obtener cadena de conexión en C#

Desde el código C# solo definiremos una vez la obtención de la cadena de conexión de la Web.config, mediante una condición respecto a la llave.

En el código C# colocamos el siguiente código:

SqlConnection cnn = new SqlConnection();
if (ConfigurationManager.AppSettings["BDActivo"].ToString() == "0")
{
    cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["BDLocal"].ToString());
}
else if (ConfigurationManager.AppSettings["BDActivo"].ToString() == "1")
{
    cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["BDProduccion"].ToString());
}

Hacemos una instancia de la clase SqlConnection para poder realizar la condición de la cadena de conexión activa.

Con el parámetro AppSettings de la clase ConfigurationManager obtenemos el valor de la llave BDActivo.

Si el valor es 0, se obtiene la cadena de conexión de la base de datos local y en caso contrario si es 1 se hace la conexión a la base de datos de Producción.

Múltiple cadena de conexión en la Web.config

Después de la obtención de la cadena de conexión ya podemos administrar la base de datos activa.

Podría interesarte Consultar a SQL Server desde ASP.Net  

Con el código anterior ya estamos definiendo la selección automática de la base de datos dependiendo de la llave de la Web.config.

La mayor ventaja es la posibilidad de solo modificar un valor en un solo archivo sin necesidad de tocar el código C#.

7 Comments

  1. Hola! para asp entity framework seria el mismo procedimiento?? hice la parte del web config, pero la siguiente parte del codigo c# no se donde iria…ahora tengo una conexión a la BBDD azure y quiero agregar la conexión a la bbdd local, muchas gracias!!!!

    1. Si es el mismo proceso; el código C# puede estar en cualquier archivo .cs, se utiliza para capturar la cadena de conexión activa; si estas aplicando capas en tu proyecto, puedes agregarlo en la capa de datos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *