現在、ASP.NET MVC でプロジェクトを作成しています。DBのみで動作するWebプロジェクトとDBプロジェクトがあります。レイヤーはこのように見え、兄弟レイヤーとのみ相互運用します。
DB プロジェクト (EF CF) - db リクエストを作成します
リポジトリ- 基礎となる db モデルの抽象化
サービス- すべてのビジネス ロジックがここで発生します。
ASP.NET MVC Web アプリケーション- フロント エンドのプレゼンテーション
それらは疎結合でなければならないので、Unity DI/IoC フレームワークを使用しています
私が達成したいのは、DbContext
http リクエストごとに 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 呼び出しに対してまったく同じオブジェクトを使用する必要があるためです。
- オブジェクトの寿命を と結合するより良い方法はあり
HttpContext
ますか? - Unity (DI/IoC フレームワーク) を使用してそれを行うことは可能ですか?