0

我有一个系统需要向企业展示可以登录系统的员工名单。所以我需要按 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 类中似乎是一种合乎逻辑的方法。

如果绝对没有办法一次抓住我需要的所有特定用户,谁能告诉我一些快速抓住他们的方法?我的循环是否做错了什么,导致需要很长时间才能获得用户?

谢谢!

4

1 回答 1

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)

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

于 2013-08-02T19:10:20.683 回答