用存储库模式创建ViewModels的正确方法是什么

时间:2018-07-14 10:30:51

标签: asp.net asp.net-mvc model-view-controller repository

我正在学习将ASP.NET MVC与存储库模式一起使用。 我有一个用户列表和一个角色列表。用户包含一个RoleId,角色包含一个RoleName和ID。我想返回一个UsersWithRoles列表,并将其放入具有UserName和RoleName的ViewModel中。什么是正确的进行方式。 我在想:    1)获取名称和角色列表,并从控制器(foreach)填充ViewModel    2)在存储库中加入角色和名称,并将它们作为实体返回给控制器,在控制器中填充ViewModel    3)在存储库中加入角色和名称,然后直接作为ViewModel返回

2 个答案:

答案 0 :(得分:0)

通过使用LINQ获取用户记录,并使用该用户信息,您可以再次使用LINQ获取角色记录。最后,您可以添加自定义模型,然后将该模型发送到受尊重的视图。

在控制器中

查找特定记录并将公用字段(主数据)存储到局部变量

var Users = _Entity.UserInfoTable.Where(p => p.UserCode.Equals(UserID)).FirstOrDefault();
string strUserID = Users.UserID

strUserID保留用户ID

现在使用局部变量获取特定于该用户的角色数据

var UserRole = _Entity.UserRoleTable.Where(p => p.UserCode.Equals(strUserID)).FirstOrDefault()

最后一步:将UserRole数据添加到“自定义/查看模型/仓库”

CustomeModel cm = new CustomeModel();
cm.UserID  = UserRole.UserID;
cm.RoleID = UserRole.RoleID;
cm.RoleName = UserRole.RoleName;

答案 1 :(得分:0)

   var usersWithRoles = (from u in Users
                         join r in Roles on r.Id equals u.RoleId
                         select new UserWithRoles{
                                UserName = u.UserName,
                                RoleName = r.RoleName

                        }).ToList();