ObjectContext.Refresh()?

后端 未结 4 2000
天涯浪人
天涯浪人 2020-11-30 06:15

How to update ALL the dirty entities from the data store, and reset their changed values to the original store value?

The method ObjectContext.Refresh requires as a

相关标签:
4条回答
  • 2020-11-30 06:28

    If you want to reset ALL the changes, you could set the ObjectContext to null and re-instantiate it.

    I believe this will achieve what you want.

    Kindness,

    Dan

    0 讨论(0)
  • 2020-11-30 06:35

    We use this:

    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;
        });
    

    Where "Context" is the context to refresh. We filter by change state and entities to avoid new entities and relations.

    0 讨论(0)
  • 2020-11-30 06:42

    You can use this code:

    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);
    }
    

    I wrote a post on how to RefreshAll() and refresh the context in some other ways:

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

    0 讨论(0)
  • 2020-11-30 06:49

    The following usually works:

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

    It sometimes causes problems with EntityRelations. look at my comment for further details.

    0 讨论(0)
提交回复
热议问题