我已经将我的项目分成(截至此时)4层:
- 应用程序(ASP.NET MVC 项目)
- 域/模型(仅包含完全没有逻辑的模型)
- BusinessLogic(现在只“包装”存储库)
- DAL(实体框架,但应该是可互换的)
MVC 控制器使用业务逻辑“服务”通过业务逻辑层下方的任何内容与数据库对话,并且控制器不需要告诉任何人“我想要这个Student
,我也想要他的所有Courses
”——这意味着应该使用延迟加载。
问题是,如果我只是“调用”并将结果返回给调用控制器操作的任何人,除非我显式访问模型上的属性以触发图形的加载,否则我无法真正控制加载的内容。
我想使用 AutoMapper 从我的模型映射到 Dto(每个模型一个,它定义了返回的内容)。
假设我有这样的模型:
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
,这是我的问题。
我应该在存储库层急切加载吗?