ObjectContext.Refresh ()?

¿Cómo actualizar TODAS las entidades sucias del almacén de datos y restablecer sus valores modificados al valor original de la tienda?

El método ObjectContext.Refresh requiere como parámetro las entidades que se actualizarán.

    Lo siguiente generalmente funciona:

    Context.Refresh(RefreshMode.StoreWins, _ Context.ObjectStateManager.GetObjectStateEntries()) 

    A veces causa problemas con EntityRelations. mira mi comentario para más detalles.

    Puedes usar este código:

     public void RefreshAll() { // Get all objects in statemanager with entityKey // (context.Refresh will throw an exception otherwise) var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries( EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); context.Refresh(RefreshMode.StoreWins, refreshableObjects); } 

    Escribí una publicación sobre cómo actualizar RefreshAll () y actualicé el contexto de otras maneras:

    http://christianarg.wordpress.com/2013/06/13/entityframework-refreshall-loaded-entities-from-database/

    Si desea restablecer TODOS los cambios, puede configurar ObjectContext para anular y volver a crear instancias.

    Creo que esto logrará lo que quieres.

    Amabilidad,

    Dan

    Usamos esto:

     return Context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Deleted System.Data.EntityState.Modified).All(ose => { if(ose.Entity != null) Context.Refresh(RefreshMode.StoreWins, ose.Entity); return true; }); 

    Donde “Contexto” es el contexto para actualizar. Filtramos por estado de cambio y entidades para evitar nuevas entidades y relaciones.