私は特に、次のコードを使用するEntityFrameworkでユーザーを偽装するために受け入れられた回答を参照します。
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
using (var dbContext = new MyEntityFrameworkContainer())
{
...
}
リポジトリ内の1つの場所でのみインスタンス化dbContext
して、を実装IDisposable
し、エンティティが破棄されたときにコンテキストを破棄したいと思います。上記の2つのusing
スコープが互いにどのように影響するかはわかりませんが、ブロックの使用を避けながら、偽装に関してこのコードが行うことをどのように実現できますか?
追加:
以下の回答が示唆しているように、ローカル変数を使用して「手動で」リソースが確実に破棄されるようにすることができますが、ここでの私の懸念は、内部のインスタンス化がusing
外部の影響を受けるかどうかusing
です。これが生涯の問題であり、アウターusing
がコンテキストやインナーに影響を与えるものを確立していない場合、以下の回答が私の質問に答えています。