15

データ ストアからすべてのダーティ エンティティを更新し、変更された値を元のストア値にリセットする方法は?

メソッドObjectContext.Refreshは、更新するエンティティをパラメーターとして必要とします。

4

4 に答える 4

16

通常、次のように動作します。

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

EntityRelations で問題が発生することがあります。詳細については、私のコメントをご覧ください。

于 2009-11-17T06:39:03.113 に答える
11

次のコードを使用できます。

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

RefreshAll() の方法に関する投稿を書き、他の方法でコンテキストを更新しました。

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

于 2013-06-13T16:27:55.923 に答える
0

すべての変更をリセットする場合は、ObjectContextをnullに設定して、再インスタンス化できます。

私はこれがあなたが望むものを達成すると信じています。

親切、

ダン

于 2009-11-17T06:27:07.410 に答える
0

これを使用します:

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

ここで、「Context」は更新するコンテキストです。新しいエンティティと関係を避けるために、変更状態とエンティティでフィルタリングします。

于 2010-12-01T10:20:51.363 に答える