データ ストアからすべてのダーティ エンティティを更新し、変更された値を元のストア値にリセットする方法は?
メソッドObjectContext.Refreshは、更新するエンティティをパラメーターとして必要とします。
データ ストアからすべてのダーティ エンティティを更新し、変更された値を元のストア値にリセットする方法は?
メソッドObjectContext.Refreshは、更新するエンティティをパラメーターとして必要とします。
通常、次のように動作します。
Context.Refresh(RefreshMode.StoreWins, _
Context.ObjectStateManager.GetObjectStateEntries())
EntityRelations で問題が発生することがあります。詳細については、私のコメントをご覧ください。
次のコードを使用できます。
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() の方法に関する投稿を書き、他の方法でコンテキストを更新しました。
すべての変更をリセットする場合は、ObjectContext
をnullに設定して、再インスタンス化できます。
私はこれがあなたが望むものを達成すると信じています。
親切、
ダン
これを使用します:
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」は更新するコンテキストです。新しいエンティティと関係を避けるために、変更状態とエンティティでフィルタリングします。