按ID获取MembershipUsers列表?

时间:2013-08-02 19:00:02

标签: asp.net asp.net-membership membership-provider membershipuser

我有一个系统需要向企业展示他们可以登录系统的员工名单。所以我需要通过ID获得一个MembershipUsers列表。那可能吗?我所看到的只是会员的GetAllUsers()方法,但我真的不认为这会起作用。将有成千上万的用户,因为每个企业都有自己的员工名单,但我每次只需要一小部分(每个企业可能大约40个)。将处理数千行只是为了再次查询特定子集似乎是一种可怕的浪费。然而,循环并逐个获取每个最多需要8秒!我目前的代码如下:

       foreach (int userAccountID in ListOfEmployeeIDs)
       {
            MembershipUser membershipUser = Membership.GetUser(userAccountId);
            if (membershipUser != null)
            {
                dto.Username = membershipUser.UserName;
                dto.Email = membershipUser.Email;
                dto.Password = membershipUser.GetPassword();
            }

            //Include User's Roles
            dto.Roles = Roles.GetRolesForUser(dto.Username);
       }

是否有任何东西可以让我一举获得我需要的所有用户(我也需要角色)?我错过了一些明显的东西吗这似乎是一个包含在Membership类中的逻辑方法。

如果绝对无法一次抓住我需要的所有特定用户,有人能告诉我一些快速抓取它们的方法吗?我的循环是否做错了让得到用户需要这么长时间?

谢谢!

1 个答案:

答案 0 :(得分:0)

MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, 
   out int totalRecords)

MembershipUserCollection FindUsersByName(string usernameToMatch, 
   int pageIndex, int pageSize, out int totalRecords)

MembershipUserCollection FindUsersByEmail(string emailToMatch, 
   int pageIndex, int pageSize, out int totalRecords)

会员提供商仅提供3种返回MembershipUserCollection的方法。

不幸的是,它没有FindUsersById

您正在使用的

GetUser是唯一接受GuidID的方法。

MembershipUser GetUser(object providerUserKey, bool userIsOnline)

除非您创建自己的服务类,否则您没有其他选择。