Использование сервиса для получения всех пользователей IUser

В orchard 1.6 я хочу получить все записи в таблице Orchard_Users_UserPartRecord

Я могу получить пользователя, сказав:

var user = _membershipService.GetUser(username);

or

 IUser userInfo = _authenticationService.GetAuthenticatedUser();

нет ли какого-либо запроса или службы, которая позволяет мне получить AllUsers? ... я уверен, что есть, но я не вижу его, поэтому я попытался добавить свой собственный...

В модуль Orchard.Users в memberService.cs iv добавлено:

public IEnumerable<IUser> GetAllUsers()
    {
        return _orchardServices.ContentManager.Query<UserPart, UserPartRecord>().List();
    }

техн в IUserService iv добавил:

IEnumerable<IUser> AllUsers();

и в userService iv добавлено:

 public IEnumerable<IUser> AllUsers()
    {
        IEnumerable<IUser> users = _membershipService.//but it doesnt allow me to select GetAllUsers, but it does allow me to seleect
            //getUser, iv used the same code only changed the query why isnt it showing?
        if (users == null)
            return null;

        return users;
    }

то, где мне нужно было получить всех пользователей, я могу сказать:

IEnumerable<IUser> allUsers = _userService.AllUsers();

Я думаю, что есть служба, которая уже делает это, я просто не вижу ее. Любые идеи?


person John    schedule 02.01.2014    source источник


Ответы (1)


GetAllUsers() недоступен на _membershipService, потому что _membershipService относится к типу интерфейса IMembershipService, а не к классу MembershipService, куда вы добавили метод GetAllUsers(). Чтобы сделать это доступным, также добавьте объявление метода для GetAllUsers() в интерфейс IMembershipService.

Что касается того, существует ли уже служба для этого, то это не так. Вы можете видеть, что сам Orchard использует ту же технику, которую вы описали выше, для получения списка пользователей, например, в AdminController, который поставляется с модулем Orchard.Users:

var users = Services.ContentManager
    .Query<UserPart, UserPartRecord>();
person Katsuyuki Ohmuro    schedule 03.01.2014
comment
спасибо за ответ, да, класса IMembershipService нет, но, конечно же, мне не нужно его создавать, так как эти модули должны быть правильными?.. Итак, в той же папке есть userService и IUserService, я понял, что есть причина, по которой их нет Служба членства? - person John; 03.01.2014
comment
IMembershipService — это интерфейс в Orchard.Security (часть Orchard.Framework). MembershipService в Orchard.Users — это класс, реализующий этот интерфейс. Предполагается, что IMembershipService является интерфейсом фреймворка, то есть чем-то, что, как ожидается, будет реализовано каким-либо модулем. Если вы хотите, вы можете предоставить альтернативную реализацию, основанную на чем-то другом, кроме UserPart (например, LDAP или Active Directory). - person Katsuyuki Ohmuro; 03.01.2014
comment
Когда авторы Orchard разрабатывали интерфейс IMembershipService, они не чувствовали необходимости предоставлять способ запроса для всех пользователей. Может быть, это не имеет смысла для некоторых провайдеров членства, или, может быть, это просто не пришло им в голову. Вы можете попробовать спросить кого-нибудь из команды. - person Katsuyuki Ohmuro; 03.01.2014