我有以下代码。但是必须有一种更高效的数据库方法来执行此操作,因为如果我错了,请纠正我数据库查询的数量是(1 +(具有管理员角色的用户数量))
对于新的 MVC 4 项目,成员资格默认值为表 UserProfile、webpages_Roles 和 pages_UsersInRoles。我看到很多 Roles.Get* 的内置方法。如果我想避免编写像下面这样的代码,我是否需要为 pages_Roles 和 pages_UsersInRoles 以及所有代码优先属性显式创建模型?仅从 Roles.Get* 获取用户名是不够的,我需要完整的 UserProfile。
仅供参考,下面的“UserRole”对象只是一个枚举
public ActionResult Admins()
{
var dbContext = new UsersContext();
var usernames = Roles.GetUsersInRole(UserRole.SiteAdministrator.ToString());
var adminUsers = new List<UserProfile>();
foreach (string username in usernames)
{
var adminUser = dbContext.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == username);
adminUser.Roles.Add(UserRole.SiteAdministrator);
adminUsers.Add(adminUser);
}
return View(adminUsers);
}