bbu*_*ver 7 entity-framework automapper asp.net-core
使用Automapper的正确方法是什么?它是在控制器中还是在存储库模式中?对我来说,似乎把它们放在控制器中并不整洁无序.
所以,例如,
(控制器中使用的自动映射器):
- StudentController
public IActionResult Get()
{
var query = _context.Students.ToList();
var mapper = AutoMapper.Mapper.Map<List<Student>, List<StudentViewModel>>(query);
return new OkObjectResult(mapper);
}
Run Code Online (Sandbox Code Playgroud)
(存储库模式中使用的自动映像):
- StudentController
public IActionResult Get()
{
return new OkObjectResult(_studentRepository.GetAllStudents());
}
Run Code Online (Sandbox Code Playgroud)
- StudentRepository
public IEnumerable<StudentViewModel> GetAllStudents()
{
var query = _context.Students.ToList();
var mapper = AutoMapper.Mapper.Map<List<Student>, List<StudentViewModel>>(query);
return mapper;
}
Run Code Online (Sandbox Code Playgroud)
返回相同的结果,但实际上放置自动播放器设置的最佳位置是什么?使用.ProjectTo()以避免使用AutoMapper.Mapper.Map会更好吗?
小智 13
思考它的一个简单方法是改变模型.
在这种情况下,您将映射到视图模型.这是控制器的可靠性.因此,逻辑上的选择是在控制器代码中进行映射.
另一种思考方式.存储库的另一个用户可以使用相同的模型,但可以使用不同的模型.例如,将其转换为JSON对象以在REST API中使用.在这种情况下,需要不同的映射.此映射不属于存储库,而是属于存储库的用户.
| 归档时间: |
|
| 查看次数: |
1834 次 |
| 最近记录: |