我正在使用会员提供商asp.net mvc 4。
我想为每个用户提供一个没有Roles.GetRolesForUser()
的用户及其角色列表。
在我的应用程序中,业务需求声明只为用户分配一个角色。
我目前正在做的事情:
[GridAction]
public ActionResult _GetUsers()
{
var users = Membership.GetAllUsers().Cast<MembershipUser>().Select(n => new AdminAccountEditModel
{
Role = Roles.GetRolesForUser(n.UserName).FirstOrDefault(),
IsApproved = n.IsApproved,
Email = n.Email,
UserName = n.UserName
}).ToList();
return View(new GridModel(users));
}
非常低效。我该如何解决这个问题?
感谢。
答案 0 :(得分:1)
过去我在使用标准成员资格提供程序时有些作弊,并且直接针对sql中的表编写了大量复杂查询。您正在寻找的是一个简单的联接。
答案 1 :(得分:0)
我最后使用EF和linq来获得结果。
[GridAction]
public ActionResult _GetUsers()
{
var users = from user in xcsnEntities.Users
select new
{
Role = user.Roles.FirstOrDefault().RoleName,
IsApproved = user.Membership.IsApproved,
Email = user.Membership.Email,
UserName = user.UserName
};
return View(new GridModel(users));
}