¿Cómo debo editar una cadena de conexión de Entity Framework?

115

Recientemente tuve que editar mi archivo app.config para cambiar la cadena de conexión para un modelo de datos de Entity Framework ( .edmxarchivo). Pero me gustaría saber: ¿Hay alguna forma de editar la cadena de conexión EF usando el diseñador?

La cadena de conexión original la genera automáticamente el asistente Entity Data Model. La cadena de conexión no se puede cambiar, permanece deshabilitada en la ventana de propiedades del diseñador .edmx. Me gusta evitar editar XML a mano si puedo (en app.config), así que me preguntaba si hay una manera de volver a la pantalla del asistente original para realizar cambios en la cadena de conexión y dejar que la herramienta edite el archivo app.config para mi.

DesarrolladorDan
fuente

Respuestas:

190

Si elimina la cadena de conexión del app.configarchivo, volver a ejecutar el asistente del modelo de datos de la entidad lo guiará para crear una nueva conexión.

Fabián Nicollier
fuente
17
Excelente. Esta es exactamente la respuesta que estaba buscando. Solo para estar seguro, comenté la cadena existente (en lugar de eliminarla), guardé los cambios de app.config, hice clic con el botón derecho en el diseñador y elegí Actualizar modelo desde base de datos. El asistente me permite incluir la información confidencial (uid y pwd) en la cadena de conexión. ¡Gracias!
DeveloperDan
5
Si está haciendo el modelo primero, haga clic con el botón derecho en el diseñador y haga clic en 'Generar base de datos a partir del modelo' en su lugar
Carl Onager
2
Esto también funcionó para mí, excepto que tuve que actualizar el archivo App.config y luego reiniciar VS.NET 2012. No detectaba que el archivo App.config cambió.
Garry English
2
Tuve que llamar explícitamente a save en el archivo app.config para que el diseñador reconociera que la cadena de conexión se había eliminado.
Rossco
1
Una alternativa a reiniciar VS es 1. comentar la cadena de conexión en app.config 2. reconstruir el proyecto que contiene el .edmx 3. hacer clic con el botón derecho en la superficie de diseño .edmx y Actualizar modelo desde la base de datos ... que debería traer hasta el asistente de Cadena de conexión.
RIanGillis
18

No, no puede editar la cadena de conexión en el diseñador. La cadena de conexión no es parte del archivo EDMX, solo se hace referencia al valor del archivo de configuración y probablemente por eso solo es de solo lectura en la ventana de propiedades.

La modificación del archivo de configuración es una tarea común porque a veces desea realizar cambios sin reconstruir la aplicación. Esa es la razón por la que existen los archivos de configuración.

Ladislav Mrnka
fuente
+1 para recordar que: si lo ponen en un archivo de configuración, significa que quieren que puedas cambiarlo. Estaba principalmente preocupado por el hecho de que mis cambios podrían ser anulados
tobiak777
Debe ir y cambiar la cadena de conexión en la configuración de la aplicación del proyecto al que pertenece edmx. No es la configuración de la aplicación de nivel superior (que se usa cuando se ejecuta). o_0
akava
9

Normalmente, define sus cadenas de conexión en Web.config. Después de generar el edmx, la cadena de conexión se almacenará en App.Config. Si desea cambiar la cadena de conexión, vaya a app.config y elimine todas las cadenas de conexión. Ahora vaya al edmx, haga clic con el botón derecho en la superficie del diseñador, seleccione Actualizar modelo de la base de datos , elija la cadena de conexión del menú desplegable, haga clic en Siguiente , Agregar o Actualizar (seleccione lo que desee) y termine.

En la ventana de salida se mostrará algo como esto,

Archivo de modelo generado: UpostDataModel.edmx. La carga de metadatos de la base de datos tomó 00: 00: 00.4258157. La generación del modelo tomó 00: 00: 01.5623765. Se agregó la cadena de conexión al archivo App.Config.

DanKodi
fuente
Tengo un problema similar, pero cuando comento la cadena de conexión, actualizo el modelo, elijo una nueva cadena de conexión, mi clase context.cs dentro del modelo se vacía. ¿No está seguro de por qué está haciendo esto a menos que simplemente no genere la clase de contexto?
bits
1
No debería hacer eso. Puede que su herramienta de creación de plantillas T4 esté dañada.
DanKodi
Estoy de acuerdo, "no debería". Sin embargo, perdí la cuenta de la cantidad de veces que, al realizar más de unos pocos cambios no triviales en el esquema subyacente, finalmente tuve que destruir el modelo y crear uno nuevo. Tal vez con EF7 y su eliminación del archivo edmx pueda ayudar. De cualquier manera, eso es lo que hice esta vez también, solo resalté todo en el modelo,
presioné
2

Abra el archivo .edmx, cualquier editor de texto, cambie el esquema = " su esquema requerido " y también abra la aplicación.config / web.config , cambie la identificación de usuario y la contraseña de la cadena de conexión . estás listo.

bijon75
fuente
Sí, esto lo hizo.
ggderas
1

Siga los siguientes pasos:

  1. Abra app.config y comente sobre la cadena de conexión (guardar archivo)
  2. Abra el edmx (vaya a propiedades, la cadena de conexión debe estar en blanco), cierre el archivo edmx nuevamente
  3. Abra app.config y descomente la cadena de conexión (guardar archivo)
  4. Abra el edmx, vaya a propiedades, ¡debería ver la cadena de conexión actualizada!
Cesar Alvarado Díaz
fuente