私のプロジェクトでは、EF Code First 4.3 を使用しています。重い操作を行うストアド プロシージャを呼び出さなければならない場合があり、その操作によって一部のエンティティが変更されますが、EF DbContext ID マップのため、新しい DbContext を作成しない限り変更を確認できません。
DbContext を再作成せずにそれを行う方法はありますか? 私は依存性注入によってそれを取得しますが、それは非常に便利なので、それを壊したくありません。
私のプロジェクトでは、EF Code First 4.3 を使用しています。重い操作を行うストアド プロシージャを呼び出さなければならない場合があり、その操作によって一部のエンティティが変更されますが、EF DbContext ID マップのため、新しい DbContext を作成しない限り変更を確認できません。
DbContext を再作成せずにそれを行う方法はありますか? 私は依存性注入によってそれを取得しますが、それは非常に便利なので、それを壊したくありません。
キャッシュをクリアすることはできないと思いますが、コンテキストに特定のエンティティを強制的にリロードさせることはできます。
単一のエンティティをリロードするには:
context.Entry(entity).Reload();
特定のタイプのすべてのエンティティをリロードするには:
foreach (DbEntityEntry<T> entry in context.ChangeTracker.Entries<T>())
{
entry.Reload();
}
すべてのエンティティをリロードするには:
foreach (DbEntityEntry entry in context.ChangeTracker.Entries())
{
entry.Reload();
}