Estoy utilizando Entity Framework con las plantillas de la entidad de seguimiento automático T4, que de forma predeterminada generará una consulta SQL que configurará todas las propiedades de la entidad en una declaración UPDATE. Solo quiero una instrucción UPDATE que contenga las propiedades modificadas.¿Cómo obtengo Entity Framework para que actualice solo las Propiedades modificadas en el SQL generado?
he modificado la plantilla de T4 como se especifica en el libro: Entity Framework Recipes: A Problem-Solution Approach página 503.
cambié a esta línea en la plantilla T4:
OriginalValueMembers originalValueMembers = new OriginalValueMembers(false, metadataWorkspace, ef);
Hacer un seguimiento de la Entidad cada cambio de propiedad en lugar de solo siguiendo que la Entidad cambió.
Y también
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Unchanged);
Después de hacer estos cambios me dieron el resultado deseado de la instrucción SQL sólo con los valores/propiedades modificadas en la instrucción UPDATE. Sin embargo, hubo un extraño efecto secundario. Al actualizar una propiedad INT anulable desde null a algo distinto de null, Entity Framework ignoró el cambio. Los modelos de auto-seguimiento muestran el cambio en ChangeTracker con el OriginalValue nulo preciso, pero cuando Entity Framework intentó generar el SQL de actualización no vio que la propiedad cambiara si el valor original nulo y el nuevo valor no es nulo. Trabajé si el valor original no era nulo y el valor se cambia.
Parece que funciona bien en una propiedad de cadena que va de nulo a un valor no nulo, pero int? no está trabajando.
¿Alguien tiene alguna idea?
Si publica código o XML, ** por favor ** resalte esas líneas en el editor de texto y haga clic en el botón "código" (101 010) en la barra de herramientas del editor para formatear y sintaxis ¡resaltarlo! –
La plantilla STE puede tener un error. Esta discusión puede ayudar a http://stackoverflow.com/questions/3598550/are-nullable-foreign-keys-allowed-in-entity-framework-4/3601768 –
No tengo una clave externa relacionada con la tabla que estoy utilizando. Es solo 1 entidad sin claves externas. Su enlace anterior parece ser el mismo problema, pero todavía no hay solución. –