Можно ли активировать фильтры 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>())

1 ответ

Решение

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

https://orchard.codeplex.com/SourceControl/changeset/15e4e27c46542266b9776531b2f8f6ad8749ea0f

Другие вопросы по тегам