0

次のようなヘルパー クラスがあるとします。

public static class RequestHelper {
    private const String DbContextKey = "DbContext";

    public static DbContext CurrentDbContext {
        get { return HttpContext.Current.Items[DbContextKey] as DbContext; }
        set { HttpContext.Current.Items[DbContextKey] = value; }
    }
}

そして、私のGlobal.asax.cs中には:

protected void Application_BeginRequest() {
    RequestHelper.CurrentDbContext = new DbContext("some_conn_string_name");
}

この設計はすべてのリクエストで安全ですか? を介して常にデータ アクセスを行っている場合、何か問題が発生しますRequestHelper.CurrentDbContextか?

私が尋ねる理由は、依存性注入に依存するリクエストごとのコンテキストのはるかに複雑な実装を見てきたことです。明らかな何かが欠けているに違いないと感じており、アプリケーションに十分な数のユーザーがいるまで気付かないのではないかと心配しています。

4

1 に答える 1

1

それは問題ないはずです、そして実際、あなたが言及する解決策のほとんどはおそらく内部で非常に似たようなことをします。1つの問題は、このコードが静的リソース(js、cssなど)に対しても呼び出される可能性があることです。

もう1つの質問は、これを行うことで何かを得ることができるかどうかです。システムが非常に複雑な場合は、DIコンテナの1つを検討してください。それほど複雑でない場合は、必要な場合にのみDbContextを作成する方が保守しやすい場合があります。

于 2013-03-19T18:53:40.283 に答える