これは古いためです。最後にユーザーに対して複雑なクエリを実行しなければならなかったので、私はContentManager.Query
ではなくHQLに頼らざるを得ませんでした。これらのブログ記事を確認してください:https://weblogs.asp.net/bleroy/querying-orchard-in-hql、https://weblogs.asp.net/bleroy/joining-orchard-part-records-in-hql、https://weblogs.asp.net/bleroy/getting-orchard-content-items-out-of-hql最終結果は次のようになります。
var session = _sessionLocator.For(typeof (UserPartRecord));
const string fromTables =
"FROM Orchard.ContentManagement.Records.ContentItemVersionRecord ItemVersion"
+ " JOIN ItemVersion.ContentItemRecord Item"
+ " JOIN Item.UserPartRecord User"
+ " WHERE ItemVersion.Published = true"
+ " AND User.UserName IS NOT NULL";
const whereClause =
"User.Id NOT IN (SELECT Role.UserId FROM Orchard.Roles.Models.UserRolesPartRecord Role)";
const orderBy = "ORDER BY User.UserName";
var pageQuery = session.CreateQuery(
"SELECT DISTINCT User.Id, User.UserName "
+ fromTables
+ " AND " + whereClause
+ " " + orderBy)
.SetFirstResult(pager.GetStartIndex())
.SetMaxResults(takeNum);
var ids = pageQuery.List<int>();
var results = contentManager
.GetMany<UserPart>(ids, VersionOptions.AllVersions, QueryHints.Empty);