ejemplo - linq entity framework c#
Actualizando su edmx para reflejar los cambios realizados en su db(.net linq-to-entities) (10)
¡No actualiza, por ejemplo, la longitud máxima de los atributos de cadena!
Si trabaja con TFS no es bueno eliminar el archivo, quiere conservar el historial y no afectar a los demás.
Para mí, funciona teniendo un proyecto separado que puedo usar para recrear completamente el archivo edmx, lo abro en xml, copio y pego al existente y muevo una forma en el modelo para que VS pueda recrear el archivo .cs . Voila, ahora está actualizado.
- Así que tengo mi edmx hecho.
- Luego cambio un poco mi base de datos, cambiando una columna de NOT NULL a permitir NULL.
- Voy a mi edmx, hago clic derecho y elijo "Actualizar el modelo de la base de datos"
Ahora entro en mi programa y realmente no se ha actualizado ... No puedo poner un nulo en la columna. ¿Qué debo hacer para actualizar el edmx correctamente? Gracias.
1.Construya el proyecto después de actualizar el archivo EDMX.
2. Haga clic derecho en su archivo .tt en el explorador de soluciones.
3. Seleccione la opción "Ejecutar herramienta personalizada".
Esto actualizará el archivo .tt.
Fuente: ¡ here !
Abra el archivo edmx en el editor XML de VS y verifique si hubo errores genéricos cuando se intentó la actualización.
<!--Errors Found During Generation:
warning 6013: The table/view ''foo.dbo.snafu'' does not have a primary key
defined and no valid primary key could be inferred. This table/view has
been excluded. To use the entity you will need to review your schema,
add the correct keys and uncomment it.
<EntityType Name="snafu">
<Property Name="snafu_column" Type="smallint" />
</EntityType>-->
En el caso anterior ... Agregar una clave principal a la tabla en cuestión provocó que el "Modelo de actualización desde la base de datos" funcione.
Actualizar / eliminar desde el EDMX no siempre es funcional. Si el modelo no se actualiza al hacer clic en Actualizar modelo desde la base de datos, digamos cuando haya actualizado una vista / tabla en el DB, haga lo siguiente:
1) Eliminar la vista / tabla del diagrama modelo
2) Cambie la vista de EDMX a xml (haga clic derecho en el archivo de edmx y seleccione "Abrir con")
3) Buscar y eliminar los elementos de entidad xml
4) Volver a la vista de EDMX
5) Haga clic en Actualizar modelo desde la base de datos
Esto debería reflejar cualquier tipo de cambio que haya realizado en el DB a su EDMX. Es engorroso, pero funciona sin problemas.
En un mundo ideal, esperaría que el Modelo de Actualización de la Base de Datos sincronice los cambios de DB a EDMX. Pero, no funciona la mayor parte del tiempo.
ESTA ES LA MANERA MÁS RÁPIDA MÁS FÁCIL:
- Elimine la vista / tabla del diagrama .edmx.
- AHORA utilice el modelo de actualización de la base de datos para agregar la tabla nuevamente.
Elegir el modelo de actualización desde la base de datos es el mejor método para actualizar su EDMX. Hay ciertas propiedades que no se actualizan en la capa Conceptual.
Asegúrese de que su capa de Tienda se haya actualizado al verla en la caja de herramientas del Visor de Modelos. Si la Tienda se ha actualizado correctamente, entonces está bien, y su base de datos está sincronizada. Si es así, acceda al diseñador visual, haga clic en el campo, vaya a propiedades y actualice la propiedad NotNull en el lado Conceptual.
Eliminar todas las tablas de la vista de diseñador y actualizar después de eso me funciona
Esta respuesta es mejor: https://.com/a/23886016/1014884
Cualquier edición manual está lista para errores o se perderá cuando alguien use alguna herramienta como el asistente. Eliminar y actualizar con el asistente es mucho mejor.
Lo que he hecho con éxito es esto (VB.Net).
- hacer actualizaciones a la base de datos como se desee / requerido
- Elija "Actualizar desde la base de datos" en el modelo EDMX, el modelo gráfico mostrará correctamente la nueva estructura / tablas
- Expanda el proyecto para que muestre todos los archivos relacionados
- Los dos archivos con la extensión "tt" son los que importan: primero tome uno SIN el .Context. antes de la extensión tt. haga clic derecho sobre él y elija Ejecutar herramienta personalizada:
- Haga lo mismo para el archivo .tt con .Context. en su nombre. Todos sus códigos y clases de modelos lógicos se actualizarán.
Sí, no funciona la mayor parte del tiempo: - /
El "mejor método" (porque funciona sistemáticamente) es eliminar el archivo EDMX y generarlo de nuevo. Pero no se olvide de eliminar la cadena de conexión en App.config (de lo contrario, VS2008 wizzard agregará un sufijo al nombre de entidad predeterminado) y borrará la caché.
Espero que estas herramientas funcionen mejor en una próxima versión, ya que disminuye la productividad dramáticamente ...