2

現在、ASP.NET MVC でプロジェクトを作成しています。DBのみで動作するWebプロジェクトとDBプロジェクトがあります。レイヤーはこのように見え、兄弟レイヤーとのみ相互運用します。

DB プロジェクト (EF CF) - db リクエストを作成します

リポジトリ- 基礎となる db モデルの抽象化

サービス- すべてのビジネス ロジックがここで発生します。

ASP.NET MVC Web アプリケーション- フロント エンドのプレゼンテーション

それらは疎結合でなければならないので、Unity DI/IoC フレームワークを使用しています

私が達成したいのは、DbContexthttp リクエストごとに 1 つのインスタンスを作成することです。以下は、これまでに実装したロジックです。

public class MyAppBaseController : Controller {
    protected override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (HttpContext.Items["DbModel"] == null) {
            HttpContext.Items["DbModel"] = MySingleton.Container.Resolve<DbContext>();
        }
        base.OnActionExecuting(filterContext);
    }
}

Items現在の辞書にHttpContextがない場合、要求パイプラインDbContextで が追加されます。すべてのコントローラーはそれを継承します。私がそうしている理由は、実行中に呼び出されるすべてのリポジトリがDbContext、すべての連続した db 呼び出しに対してまったく同じオブジェクトを使用する必要があるためです。

  1. オブジェクトの寿命を と結合するより良い方法はありHttpContextますか?
  2. Unity (DI/IoC フレームワーク) を使用してそれを行うことは可能ですか?
4

1 に答える 1

1

ここで指定されているように、ユニティのオブジェクトの有効期間管理で依存関係のインスタンスの有効期間を制御できます

オブジェクトインスタンスを httpcontext に注入する独自のものを作成する必要があります

于 2011-12-02T22:18:13.177 に答える