我问了一个关于在控制器中将ViewModels映射到Entity Framework模型的最佳实践的问题,并被告知我的代码是正确的(使用LINQ投影),尽管还可以使用AutoMapper。
现在,我觉得我需要/想要将Controller方法中发生的大部分操作移至新的Service层,以便可以在需要时在该层添加业务逻辑,然后在控制器中进行方法调用。但是我不确定该怎么做。我的ViewModels都将保留在Web项目中,因此服务层中的方法应该是什么样子以及在何处/如何映射ViewModels?
这是当前GET和POST控制器方法的示例:
public ActionResult Laboratories()
{
var context = new PASSEntities();
var model = (from a in context.Laboratories
select new LaboratoryViewModel()
{
ID = a.ID,
Description = a.Description,
LabAdmins = (from b in context.Users_Roles
join c in context.Users on b.User_ID equals c.ID
where b.Laboratory_ID == a.ID
select new LabAdminViewModel()
{
ID = b.ID,
User_ID = b.User_ID,
Role_ID = b.Role_ID,
Laboratory_ID = b.Laboratory_ID,
BNL_ID = c.BNL_ID,
First_Name = c.Pool.First_Name,
Last_Name = c.Pool.Last_Name,
Account = c.Account
})
});
return View(model); …Run Code Online (Sandbox Code Playgroud)