none
Mi aplicación, necesita modificar el connectionstring dependiendo el usuario que ingrese. RRS feed

  • Pregunta

  • Quiero que mi aplicacion web, cambie de base de datos según el usuario con el que ingreso, modificar el connection string en tiempo de ejecucion no me serviria ya que lo cambiaria para todos los usuarios, la idea es tener solo una aplicacion web, con varias bases de datos identicas que cambiarian dependiendo el usuario. esto para que al momento de actualizar las fuentes de mi aplicacion web solo deba hacerlo en una sola fuente y no en una por una cuantas bases de datos existan. si tienen alguna solución estare muy atento, estoy trabajando en un proyecto con esta perla, gracias por su colaboración.

    Oscar L 

    viernes, 8 de julio de 2011 21:03

Todas las respuestas

  • hola

    podrias definir en el web.config varios tag en la session de ConnectionString que esta justo para eso

    alli defines una por cada db que tengas

    entonces cuando ingresa un usuario tomarias el name de esa db configurada en el web.config

     

    Using connection strings from web.config in ASP.NET v2.0

    como veras lo accedes por el nombre, por supuesto tendras en algun lugar mapeado que usuario toma que nombre del config

    la idea es que usando el ConfigurationManager y sabiendo el name (del tag en el .config) recuperes la cadena de conextion para trabajarla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 8 de julio de 2011 22:17
  • estoy trabajando en un proyecto con esta perla, gracias por su colaboración.

    Oscar L 

     

    Pero perla, perla...

     

    ¿No puedes simplemente cambiar la conexión a la base de datos sin modificar el connection string en el web.config? Es decir, utilizar una variable intermedia antes de cada conexion.

     

    string cadena = ConfigurationManager.ConnectionStrings["Cadena"].ToString();

                cadena = cadena.Replace("DataSource=XXX;", "DataSource=Pepito;");

                SqlConnection connection = new SqlConnection(cadena);

     

     

     


    Jovino Rodríguez
    MCP
    Sharp Code Blog
    lunes, 11 de julio de 2011 13:01
  • Hola: 

     

    Tanto lo que te plantea Leandro como Jovino, puede ser util.

     

    Lo que plantea Leandro es valido para un numero de usuarios conocido. ¿Podría ser que no sepaa el numero de usuarios?. Si es así necesitas guardar en algún lugar Usuario,Servidor,Database.

     

    Yo personalmente lo de Jovino lo haría con SqlConnectionStringBuilder o DbConnectionStringBuilder. Hecha un vistazo a estas dos clases

     

    http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqlconnectionstringbuilder(v=vs.80).aspx


    phurtado
    lunes, 11 de julio de 2011 13:20
  • Lo que plantea Leandro es valido para un numero de usuarios conocido. 

    Según lo entendí yo, más bien es válido para un número de BBDD conocidas. En algún lugar debe tener mapeado usuario con base de datos que le corresponda, así que sólo necesita tener un cnnstr para cada base de datos existente. Dado un usuario, ve el mapeo y decide qué cnnstr tomar... IMHO sería la mejor opción...

    Saludos. 



    Fernando Gómez
    fermasmas.wordpress.com
    jueves, 14 de julio de 2011 21:36
  • Fernando? Lograste encontrar la solución a tu problema?. He recorrido toda la web buscando lo mismo. Agradecería si tienes la solución.
    miércoles, 25 de enero de 2012 15:39