2014-01-02 2 views
1

В саду 1.6 Я хочу, чтобы получить все записи в таблице Orchard_Users_UserPartRecordИспользуя услугу GETALL IUser

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

var user = _membershipService.GetUser(username); 

или

IUser userInfo = _authenticationService.GetAuthenticatedUser(); 

Нет ли какого-либо запроса или сервиса, который позволяет мне getAllUsers? ... im sure есть, но я не могу его увидеть, поэтому я попытался добавить свой собственный ...

В модуле Orchard.Users в IV membershipService.cs добавлено:

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(); 

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

ответ

1

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

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

var users = Services.ContentManager 
    .Query<UserPart, UserPartRecord>(); 
+0

спасибо за ответ, Да нет класса IMembershipService , но, конечно, я не должен был создавать один, так как эти модули должны быть правильными? .. Итак, в той же папке есть userService и IUserService, я понял, что есть причина, по которой не существует IMembershipService? – John

+0

'IMembershipService' - это интерфейс в' Orchard.Security' (часть 'Orchard.Framework'). 'MembershipService' в' Orchard.Users' - это класс, реализующий этот интерфейс. 'IMembershipService' должен быть интерфейсом фреймворка, то есть тем, что предполагается реализовать каким-либо модулем. Если вы захотите, вы можете предоставить альтернативную реализацию на основе чего-то другого, кроме «UserPart» (например, LDAP или Active Directory). –

+0

Когда авторы Orchard разработали интерфейс «IMembershipService», они не чувствовали необходимости предоставлять способ запроса для всех пользователей. Возможно, это не имеет смысла для некоторых поставщиков членства, или, может быть, это то, чего им просто не было. Возможно, вы захотите попросить кого-нибудь из команды. –

Смежные вопросы