ASP.NET MVC3 と SQL Server のデータベースを使用して、Web アプリケーション プロジェクトに取り組んでいます。REST サービスを介して同じデータベースのデータを使用するモバイル アプリケーションもあります。ここに私のアプリケーションのレイヤーのいくつかがあります:
モデル- Entity Framework を使用した ADO.NET データ モデル
データ アクセス レイヤー- データベースからデータを取得するためのクエリを含むリポジトリ
Web アプリケーション- リポジトリを使用する MVC3 プロジェクト、構造マップと DI を使用した疎結合、HttpRequest の最後でデータベース コンテキストが破棄される
コア- DAL とサービス層の間の別の層で、リポジトリを使用し、データをサービス層に公開します。ビジネスロジックレイヤーの一種。
サービス層- REST サービスは、コア層については知っていますが、DAL については知りません。データを DTO にマップし、クライアントに公開します
このようなアプリケーション アーキテクチャで私が抱えている問題は、サービス層での疎結合です。サービス層はコア層への参照を持っています。コア層はデータ アクセス層への参照を持ち、そのリポジトリを使用します。ただし、リポジトリにはデフォルトのコンストラクターがありません。1 つのパラメーターとそのデータベース オブジェクト コンテキスト (使い捨てオブジェクト) が必要です。
私のウェブサイトでリポジトリを直接使用しても問題ありません。私は構造マップを使用しており、DI はそれを疎結合にします。各コンテキストは、HttpRequest の最後で破棄されます。
問題は、そのサービス層とコア層です。そこにも疎結合が欲しいのですが、それを達成する方法がわかりませんか? それらにデータコンテキストを挿入し、特定の瞬間に破棄されるようにする方法は? すべてをまとめる方法についていくつかの提案を聞きたいです。