2010-06-01 26 views
34

Si construye el archivo edmx desde la base de datos y luego cambia el archivo db, ¿cómo hace para que el modelo recoja el cambio?Entity Framework: ¿cómo se actualiza el modelo cuando cambia el DB?

¿Eliminas todo el modelo y lo regeneras o puedes detectar cambios?

Veo una publicación que menciona un "Actualizar su modelo" rt. comando del mouse en el archivo edmx, pero no lo veo.

Updating your edmx to reflect changes made in your db (.net linq-to-entities)

estoy empezando.

+4

No está en el archivo edmx, sino en la interfaz gráfica. Abra edmx en el editor gráfico haciendo doble clic izquierdo y allí encontrará 'Actualizar modelo'. – LukLed

Respuesta

43

¿Estás mirando el diseñador o la vista de código? Puede forzar el diseñador para abrir haciendo clic derecho sobre el archivo EDMX y seleccionando Open With -> ADO.NET Entity Data Model Designer

Haga clic derecho sobre la superficie del diseñador del diseñador EDMX y haga clic en Update Model From Database...

Todas las entidades se actualizan de forma predeterminada, sólo se incorporan nuevas entidades si los seleccionas


EDIT: Si no es refrescante también.

  • Seleccione todas las tablas y vistas en el diseñador de EDMX.
  • Eliminarlos.
  • Entonces, actualización del modelo de base de datos
+0

No vi la opción "pluma con -> ADO.NET Entity Data Model Designer" al hacer clic con el botón derecho del mouse en el archivo edmx, pero la otra opción estaba disponible. Me gustaría saber por qué, pero me proporcionó una respuesta válida. ty. – ChadD

+0

haga clic derecho en el archivo edmx y elija abrir con luego elija el diseñador del modelo de datos –

+3

¿Es posible hacer esto programáticamente? Me gustaría incorporar esto como parte de mi proceso de compilación. –

14

he encontrado el diseñador de "actualización de base de datos" sólo puede manejar pequeños cambios. Si ha eliminado tablas, cambiado claves externas o (gasp) ha cambiado la firma de un procedimiento almacenado con un mapeo de función, eventualmente llegará a un estado tan desordenado que tendrá que eliminar todas las entidades y "agregar desde la base de datos" o simplemente elimine el recurso de edmx y comience nuevamente.

+0

El asistente de "actualización desde la base de datos" reemplaza al SSDL pero solo aplica algunos cambios al CSDL. Como resultado, cuando tiene cambios más complejos, el SSDL y el CSDL tienden a perder sincronía, causando el "estado desordenado" que está viendo. Tengo un complemento que resuelve este problema para el diseñador EF4 en VS2010; Compara cada una de las tres capas (DB, SSDL, CSDL), muestra todas las diferencias y te permite sincronizar de forma selectiva las diferencias. Puede descargar el complemento y obtener una licencia de prueba en http://www.huagati.com/edmxtools/ si desea probarlo. – KristoferA

0

Solo tuve que actualizar un modelo .edmx. La opción de modelo/Ejecutar herramienta personalizada no actualizaba los campos para mí, pero una vez que tuve abierto el diseñador gráfico, pude cambiar el nombre de los campos manualmente.

1

Esto podría ayudar a los chicos. (He aplicado esto a mis proyectos)

He aquí los 3 sencillos pasos.

  1. ir a su Explorador de soluciones. Busque .edmx archivo (Generalmente se encuentran en el nivel de raíz)
  2. abierto que .edmx archivo, aparece una ventana de diagrama de modelo . Haga clic derecho en cualquier lugar de esa ventana y seleccione "Actualizar modelo desde la base de datos". Aparecerá una ventana del Asistente de actualización . Haga clic en Finalizar para actualizar su modelo.
  3. Guarde ese archivo .edmx.

Eso es todo. Se sincronizará/actualizará su base de modelo sobre los cambios en su base de datos.

Para obtener instrucciones detalladas. Por favor visite el siguiente enlace.

EF Database First with ASP.NET MVC: Changing the Database y actualizando su modelo.

+0

Conocido. Gracias por el consejo. –

1

Actualizar CodeFirst El modelo no es posible automáticamente. Yo tampoco lo recomiendo. Porque uno de los beneficios del código primero es que puede trabajar con clases de POCO. Si cambió estas clases POCO, no quiere que algún código generado automáticamente destruya su trabajo.

Pero puede crear alguna solución de plantilla agregue su entidad actualizada/agregada al nuevo modelo. luego recopile y mueva su nuevo archivo cs a su proyecto de trabajo. de esta manera no tendrás un conflicto si se trata de una entidad nueva, simplemente puedes agregar un archivo cs relacionado al proyecto existente. si es una actualización simplemente agrega una nueva propiedad del archivo. Si solo agrega algunas columnas a una o dos de sus tablas, puede agregarlas manualmente a su clase POCO, no necesita ningún trabajo extra y esa es la belleza de trabajar con clases de código primero y POCO.

0

No sé por qué no se actualiza automáticamente pero después de compilar la solución, las clases de modelos o plantillas que borre o modifique se actualizarán desde la base de datos una vez que "Reconstruya la solución".

¡Funciona en mi Visual Studio 2015!

Cuestiones relacionadas