プロジェクトを (現時点で) 4 つのレイヤーに分割しました。
- アプリケーション (ASP.NET MVC プロジェクト)
- ドメイン/モデル (ロジックをまったく含まないモデルのみを含む)
- BusinessLogic (現在、リポジトリを「ラップ」するだけです)
- DAL (エンティティ フレームワークですが、交換可能である必要があります)
MVC コントローラーは、ビジネス ロジックの「サービス」を使用して、ビジネス ロジック層の下にあるものを介してデータベースと通信します。コントローラーは、「私はこれが必要Student
であり、私は彼のすべてが必要です」と誰かに伝える必要はありません。Courses
遅延読み込みを使用する必要があります。
問題は、「コールスルー」して結果をコントローラ アクションを呼び出した人に返すだけでは、モデルのプロパティに明示的にアクセスしてグラフの読み込みをトリガーしない限り、読み込まれるものを実際に制御することはできません。
AutoMapper を使用して、モデルから Dto (返されるものを定義するモデルごとに 1 つ) にマップしたいと考えています。
次のようなモデルがあるとします。
public class Student
{
public string Name {get;set;}
public int Age {get;set;}
public ICollection<Course> Courses {get;set;}
}
そして、次のようなdto:
public class StudentDto
{
public string Name {get;set;}
public ICollection<Course> Courses {get;set;}
}
AutoMapper がマッピングを行うとき、Courses
私の問題である をマッピングしているようには見えません。
代わりに、リポジトリ レイヤーで熱心に読み込む必要がありますか?