gpt4 book ai didi

asp.net-mvc - SimpleMembership MVC 4 从在 webpages_Roles 中具有角色的 UserProfile 获取数据

转载 作者:行者123 更新时间:2023-12-02 22:29:44 24 4
gpt4 key购买 nike

我有以下代码。但是必须有一种更有效的数据库方法来执行此操作,因为如果我错了,请纠正我,数据库查询的数量是(1 +(具有管理员角色的用户数量))

对于新的 MVC 4 项目,默认成员资格是表 UserProfile、webpages_Roles 和 webpages_UsersInRoles。我看到了很多 Roles.Get* 的内置方法。如果我想避免像下面这样编写代码,我是否需要为 webpages_Roles 和 webpages_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);
}

最佳答案

是的,您不想那样做。这是一种非常低效的方式。

相反,请按设计使用工具。例如,像这样:

var usernames = Roles.GetUsersInRole(UserRole.SiteAdministrator.ToString());

var adminUsers = dbContext.UserProfiles
.Where(x => usernames.Contains(x.Username)).ToList();

return View(adminUsers);

关于asp.net-mvc - SimpleMembership MVC 4 从在 webpages_Roles 中具有角色的 UserProfile 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com