Получить список участников по идентификатору?
У меня есть система, которая должна показать бизнесу их список своих сотрудников, которые могут войти в систему. Поэтому мне нужно получить список членов членства по идентификатору. Это возможно? Все, что я вижу, - это метод GetAllUsers() для Membership, но я действительно не думаю, что это сработает. Будут тысячи пользователей, так как у каждого бизнеса будет свой список сотрудников, но каждый раз мне будет нужен только небольшой сегмент (вероятно, около 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 ответ
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)
Таким образом, у вас нет другого варианта, если вы не создадите свой собственный класс обслуживания.