Можно ли пакетно активировать фильтры Orchard ActivatingFilters?

У меня возникла ситуация, когда мне нужно отобразить информацию о списке пользователей Orchard. В этом случае я получаю список пользователей Orchard через метод GetMany.

_services.ContentManager.GetMany<UserPart>(setOfAllNeededUsers, VersionOptions.Latest, new QueryHints())

(В моем случае setOfAllNeededUsers — это IEnumerable идентификаторов пользователей, которые у меня были из предыдущего запроса)

Проблема, с которой я сталкиваюсь, связана с модулем Orchard.Roles. Orchard.Roles добавляет ActivatingFilter к типу User для загрузки сведений о роли для пользователя. Это не является проблемой по своей сути, однако запросы информации о роли для каждого пользователя выполняются индивидуально. Запрашивать внешнюю БД 20, 30, возможно, даже 100 раз, чтобы получить эту информацию, просто невозможно. Есть ли способ объединить их в один запрос?

ПРИМЕЧАНИЕ. Следующая модификация моего запроса никак не помогает:

_services.ContentManager.GetMany<UserPart>(setOfAllNeededUsers, VersionOptions.Latest, new QueryHints().ExpandParts<UserRolesPart>())

person wwahammy    schedule 16.10.2013    source источник
comment
Точнее, проблема связана с OnLoading для UserRolesPart.   -  person wwahammy    schedule 17.10.2013
comment
Я не думаю, что это возможно. Можете ли вы рассказать больше о конкретном сценарии? Потому что вы обнаружите, что это проблема, только если вы перечислите 20/30/100 пользователей одновременно вместе с их ролями.   -  person Piedone    schedule 20.10.2013
comment
@Piedone Смотрите мой ответ. В следующей версии Orchard роли пользователей будут загружаться лениво, а не с жадностью. Это устраняет большинство моих проблем.   -  person wwahammy    schedule 22.10.2013


Ответы (1)


Я обнаружил, что был сделан следующий патч, из-за которого роли пользователей загружались лениво. Я немного изменил его для собственного использования (в настоящее время нет события OnInitialized, поэтому я использовал OnInitializing), но в следующей версии это исправление должно быть встроено.

https://orchard.codeplex.com/SourceControl/changeset/15e4e27c46542266b9776531b2f9f6ea0ad874>

person wwahammy    schedule 22.10.2013