none
Cambiar conexion de bd RRS feed

  • Pregunta

  • Hola felices fiestas para todos y de nuevo por aquí con la siguiente consulta me conecto a la bd de sqlexpress después de crear el model con EF de esta forma MiEntitiesSERVER dbcontext = new MiEmpaqueEntitiesSERVER(); y luego realizo lo que necesito, también tengo esta conexion MiEntitiesNET dbcontext = new MiEmpaqueEntitiesNET(); una es el servidor donde queda alojada la aplicación final y la otra conexión es mi net y me la paso comentando y des comentando las 2 conexiones de acuerdo donde este trabajando en una aplicación pequeña no es problema ahora cuando se empiezan a agregar mas formularios es tedioso ir formulario por formulario cambiando. Mi pregunta existe la forma de usarlo en una clase y llamarlo desde ahí para solo cambiar la conexión en esa clase desde ya gracias.
    lunes, 26 de diciembre de 2016 12:29

Respuestas

  • a ver si entendí bien creo un modelo que apunte a mi net y en el config creo la cadena de conexión luego a ese mismo modelo le cambio la cadena de conexion para que apunte al server y en el config comento el que no use y dejo el que use es asi ?
    No exactamente. En Visual Studio creas un modelo que apunte a tu base de datos. En el .config no tienes que hacer nada, porque ya lo hace Visual Studio automáticamente al añadir el modelo de EF. Si abres el .config, verás que ya tiene dentro la cadena de conexión. Cuando quieras que el modelo apunte a otra base de datos, no tienes que volver a añadir otro modelo en Visual Studio (y por lo tanto no se generará una segunda cadena en el .config). Simplemente abres el .config y ahí cambias la cadena de conexión existente. Por supuesto, si lo deseas puedes conservar la antigua cadena entre comentarios. O si es solo para una prueba, puedes cambiarla en el .exe.config (que es el que se usa en tiempo de ejecución) y seguirás teniendo la otra en el app.config (que se copiará automáticamente al .exe.config cuando vuelvas a compilar).
    • Marcado como respuesta EnzoTuc40 miércoles, 11 de enero de 2017 23:00
    miércoles, 28 de diciembre de 2016 14:08

Todas las respuestas

  • Lo más normal sería que solo definieses una única conexión, y que cuando tengas que cambiar de base de datos edites el fichero .config de la aplicación y cambies ahí la cadena de conexión.

    Si no estás trabajando de esta manera, que es la estándar y recomendada, tiene que haber una buena razón para hacerlo de otra manera. Convendría que expusieras cuales son los requisitos que te fuerzan a trabajar de otra manera, con el fin de que podamos buscar una mejor solución que cumpla esos requisitos.

    lunes, 26 de diciembre de 2016 12:56
  • Hola alberto gracias por la respuesta en realidad soy novato en c# y también en EF hasta aquí agregaba el modelo ado.net entity data model desde visual studio le ponía un nombre y llamaba a ese model en mi aplicacion como no se hacerlo de forma manual lo hacia de esa forma ahora cuando me tocaba trabajar en mi net hacia lo mismo y creaba otro modelo luego comentaba el que no usaba. Me encantaria aprender hacerlo como sugiere tu respuesta si tienes algun link o tutorial para que lo lea agradecido, y una duda a ese modelo despues se lo puede actualizar desde la base de datos de nuevo agradecido
    lunes, 26 de diciembre de 2016 13:15
  • hola

    pero la base de datos tienes la misma estructura solo que en diferente localizacion? o son db muy distintas?

    porque el contexto podria ser el mismo y por configuracion cambias la conexion a una db u otra segun necesites, entonces no tocas el codigo

    Si las db son distintas y necesitas dos contextos entonces podrias implementar el patron Repository, de esta forma implementas una u otra y lo cambias mediante la genercion de una instancia, pero quizas aplicar este patron requiera que pienses como obtener la instancia por medio de alguna libreria de IoC como ser Unity, Ninject

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de diciembre de 2016 14:57
  • hola

    pero la base de datos tienes la misma estructura solo que en diferente localizacion? o son db muy distintas?

    porque el contexto podria ser el mismo y por configuracion cambias la conexion a una db u otra segun necesites, entonces no tocas el codigo

    Si las db son distintas y necesitas dos contextos entonces podrias implementar el patron Repository, de esta forma implementas una u otra y lo cambias mediante la genercion de una instancia, pero quizas aplicar este patron requiera que pienses como obtener la instancia por medio de alguna libreria de IoC como ser Unity, Ninject

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola leandro gracias por tu respuesta si las bd son las mismas solo que a veces la uso del server en el trabajo y a veces desde mi net en casa me gustaría saber como hacer para cambiar entre amas conexiones
    lunes, 26 de diciembre de 2016 22:46
  • Me encantaria aprender hacerlo como sugiere tu respuesta
    No hay que hacer nada en especial, eso es lo que hace Visual Studio automáticamente de forma predeterminada. Cuando añades el modelo de EF, Visual Studio añade la cadena de conexión en el fichero .config de tu proyecto. Cuando quieras cambiar de base de datos, solo hace falta cambiarla en esa cadena de conexión, y Entity Framework toma el valor que esté ahí escrito.
    martes, 27 de diciembre de 2016 13:09
  • Me encantaria aprender hacerlo como sugiere tu respuesta

    No hay que hacer nada en especial, eso es lo que hace Visual Studio automáticamente de forma predeterminada. Cuando añades el modelo de EF, Visual Studio añade la cadena de conexión en el fichero .config de tu proyecto. Cuando quieras cambiar de base de datos, solo hace falta cambiarla en esa cadena de conexión, y Entity Framework toma el valor que esté ahí escrito.
    Hola Alberto a ver si entendí bien creo un modelo que apunte a mi net y en el config creo la cadena de conexión luego a ese mismo modelo le cambio la cadena de conexion para que apunte al server y en el config comento el que no use y dejo el que use es asi ?
    miércoles, 28 de diciembre de 2016 12:13
  • a ver si entendí bien creo un modelo que apunte a mi net y en el config creo la cadena de conexión luego a ese mismo modelo le cambio la cadena de conexion para que apunte al server y en el config comento el que no use y dejo el que use es asi ?
    No exactamente. En Visual Studio creas un modelo que apunte a tu base de datos. En el .config no tienes que hacer nada, porque ya lo hace Visual Studio automáticamente al añadir el modelo de EF. Si abres el .config, verás que ya tiene dentro la cadena de conexión. Cuando quieras que el modelo apunte a otra base de datos, no tienes que volver a añadir otro modelo en Visual Studio (y por lo tanto no se generará una segunda cadena en el .config). Simplemente abres el .config y ahí cambias la cadena de conexión existente. Por supuesto, si lo deseas puedes conservar la antigua cadena entre comentarios. O si es solo para una prueba, puedes cambiarla en el .exe.config (que es el que se usa en tiempo de ejecución) y seguirás teniendo la otra en el app.config (que se copiará automáticamente al .exe.config cuando vuelvas a compilar).
    • Marcado como respuesta EnzoTuc40 miércoles, 11 de enero de 2017 23:00
    miércoles, 28 de diciembre de 2016 14:08