2

私のプロジェクトでは、EF Code First 4.3 を使用しています。重い操作を行うストアド プロシージャを呼び出さなければならない場合があり、その操作によって一部のエンティティが変更されますが、EF DbContext ID マップのため、新しい DbContext を作成しない限り変更を確認できません。

DbContext を再作成せずにそれを行う方法はありますか? 私は依存性注入によってそれを取得しますが、それは非常に便利なので、それを壊したくありません。

4

1 に答える 1

3

キャッシュをクリアすることはできないと思いますが、コンテキストに特定のエンティティを強制的にリロードさせることはできます。

単一のエンティティをリロードするには:

context.Entry(entity).Reload();

特定のタイプのすべてのエンティティをリロードするには:

foreach (DbEntityEntry<T> entry in context.ChangeTracker.Entries<T>())
{
   entry.Reload();
}

すべてのエンティティをリロードするには:

foreach (DbEntityEntry entry in context.ChangeTracker.Entries())
{
   entry.Reload();
}
于 2012-11-15T13:28:56.780 に答える