本文整理汇总了C#中IContentManager.Query方法的典型用法代码示例。如果您正苦于以下问题:C# IContentManager.Query方法的具体用法?C# IContentManager.Query怎么用?C# IContentManager.Query使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IContentManager
的用法示例。
在下文中一共展示了IContentManager.Query方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HasCommentsHandler
public HasCommentsHandler(
IContentManager contentManager,
IRepository<HasCommentsRecord> hasCommentsRepository,
ICommentService commentService) {
Filters.Add(StorageFilter.For(hasCommentsRepository));
OnActivated<HasComments>((ctx, x) => {
x.CommentsActive = true;
x.CommentsShown = true;
});
OnLoading<HasComments>((context, comments) => {
comments._comments.Loader(list => contentManager
.Query<Comment, CommentRecord>()
.Where(x => x.CommentedOn == context.ContentItem.Id && x.Status == CommentStatus.Approved)
.List().ToList());
comments._pendingComments.Loader(list => contentManager
.Query<Comment, CommentRecord>()
.Where(x => x.CommentedOn == context.ContentItem.Id && x.Status == CommentStatus.Pending)
.List().ToList());
});
OnRemoved<HasComments>(
(context, c) => {
foreach (var comment in commentService.GetCommentsForCommentedContent(context.ContentItem.Id)) {
contentManager.Remove(comment.ContentItem);
}
});
}
示例2: CommentsPartHandler
public CommentsPartHandler(
IContentManager contentManager,
IRepository<CommentsPartRecord> commentsRepository,
ICommentService commentService) {
Filters.Add(StorageFilter.For(commentsRepository));
OnInitializing<CommentsPart>((ctx, part) => {
part.CommentsActive = true;
part.CommentsShown = true;
part.Comments = new List<CommentPart>();
});
OnLoading<CommentsPart>((context, comments) => {
comments.CommentsField.Loader(list => contentManager
.Query<CommentPart, CommentPartRecord>()
.Where(x => x.CommentsPartRecord == context.ContentItem.As<CommentsPart>().Record && x.Status == CommentStatus.Approved)
.OrderBy(x => x.Position)
.List().ToList());
comments.PendingCommentsField.Loader(list => contentManager
.Query<CommentPart, CommentPartRecord>()
.Where(x => x.CommentsPartRecord == context.ContentItem.As<CommentsPart>().Record && x.Status == CommentStatus.Pending)
.List().ToList());
});
OnRemoved<CommentsPart>(
(context, c) => {
var comments = commentService.GetCommentsForCommentedContent(context.ContentItem.Id).List();
foreach (var comment in comments) {
contentManager.Remove(comment.ContentItem);
}
});
}
示例3: CommentPartHandler
public CommentPartHandler(
IRepository<CommentPartRecord> commentsRepository,
IContentManager contentManager,
ICommentService commentService
) {
Filters.Add(StorageFilter.For(commentsRepository));
OnLoading<CommentPart>((context, comment) => {
comment.CommentedOnContentItemField.Loader(
item => contentManager.Get(comment.CommentedOn)
);
comment.CommentedOnContentItemMetadataField.Loader(
item => contentManager.GetItemMetadata(comment.CommentedOnContentItem)
);
});
OnRemoving<CommentPart>((context, comment) => {
foreach(var response in contentManager.Query<CommentPart, CommentPartRecord>().Where(x => x.RepliedOn == comment.Id).List()) {
contentManager.Remove(response.ContentItem);
}
});
// keep CommentsPart.Count in sync
OnPublished<CommentPart>((context, part) => commentService.ProcessCommentsCount(part.CommentedOn));
OnUnpublished<CommentPart>((context, part) => commentService.ProcessCommentsCount(part.CommentedOn));
OnVersioned<CommentPart>((context, part, newVersionPart) => commentService.ProcessCommentsCount(newVersionPart.CommentedOn));
OnRemoved<CommentPart>((context, part) => commentService.ProcessCommentsCount(part.CommentedOn));
OnIndexing<CommentPart>((context, commentPart) => context.DocumentIndex
.Add("commentText", commentPart.Record.CommentText));
}
示例4: CommentPartHandler
public CommentPartHandler(
IRepository<CommentPartRecord> commentsRepository,
IContentManager contentManager) {
Filters.Add(StorageFilter.For(commentsRepository));
OnLoading<CommentPart>((context, comment) => {
comment.CommentedOnContentItemField.Loader(
item => contentManager.Get(comment.CommentedOn)
);
comment.CommentedOnContentItemMetadataField.Loader(
item => contentManager.GetItemMetadata(comment.CommentedOnContentItem)
);
});
OnRemoving<CommentPart>((context, comment) => {
foreach(var response in contentManager.Query<CommentPart, CommentPartRecord>().Where(x => x.RepliedOn == comment.Id).List()) {
contentManager.Remove(response.ContentItem);
}
});
OnIndexing<CommentPart>((context, commentPart) => context.DocumentIndex
.Add("commentText", commentPart.Record.CommentText));
}
示例5: NotificationBatchPartHandler
public NotificationBatchPartHandler(
IContentManager contentManager,
Lazy<IRoleService> roleServiceLazy,
Lazy<IRepository<UserRolesPartRecord>> userRolesRepositoryLazy)
{
OnActivated<NotificationBatchPart>((context, part) =>
{
part.RecipientsTypeField.Loader(() =>
{
var recipientsType = part.Retrieve<string>("RecipientsType");
if (string.IsNullOrEmpty(recipientsType)) return NotificationBatchRecipientsType.Role;
return (NotificationBatchRecipientsType)Enum.Parse(typeof(NotificationBatchRecipientsType), recipientsType);
});
part.RecipientsTypeField.Setter(recipientsType =>
{
part.Store("RecipientsType", recipientsType.ToString());
return recipientsType;
});
part.AvailableRolesField.Loader(() => roleServiceLazy.Value.GetRoles());
part.RecipientListField.Loader(() => contentManager.Get(part.RecipientListId));
part.AvailableRecipientListsField.Loader(() => contentManager.Query(Constants.RecipientListContentType).List());
part.RecipientListField.Setter(recipientsList =>
{
part.RecipientListId = recipientsList != null ? recipientsList.ContentItem.Id : 0;
return recipientsList;
});
part.ActualRecipientIdsField.Loader(() =>
{
IEnumerable<int> recipientIds;
switch (part.RecipientsType)
{
case NotificationBatchRecipientsType.Role:
recipientIds = userRolesRepositoryLazy.Value.Table
.Where(record => record.Role.Id == part.RecipientsRoleId)
.Select(record => record.UserId);
break;
case NotificationBatchRecipientsType.RecipientList:
recipientIds = part.RecipientList.As<NotificationRecipientsPart>().RecipientIds;
break;
case NotificationBatchRecipientsType.AdhocRecipients:
recipientIds = part.As<NotificationRecipientsPart>().RecipientIds;
break;
default:
throw new InvalidOperationException("Not supported recipient type.");
}
return recipientIds;
});
part.ActualRecipientsField.Loader(() => contentManager.GetMany<IUser>(part.ActualRecipientIds, VersionOptions.Published, new QueryHints().ExpandParts<UserPart>()));
});
}
示例6: MailHelper
public MailHelper(IContentManager contentManager, IEncryptionService encryptionService)
{
_encryptionService = encryptionService;
_mailSettings = contentManager.Query<EmailSettingsPart, EmailSettingsPartRecord>().List().FirstOrDefault();
if (_mailSettings == null)
{
_mailSettings = new EmailSettingsPart();
_mailSettings.Record = new EmailSettingsPartRecord();
}
}
示例7: BuildGetMediaContentItemsQuery
private static IContentQuery<MediaPart> BuildGetMediaContentItemsQuery(
IContentManager contentManager, string folderPath = null, bool recursive = false, string order = null, string mediaType = null, VersionOptions versionOptions = null) {
var query = contentManager.Query<MediaPart>(versionOptions);
query = query.Join<MediaPartRecord>();
if (!String.IsNullOrEmpty(mediaType)) {
query = query.ForType(new[] { mediaType });
}
if (!String.IsNullOrEmpty(folderPath)) {
if (recursive) {
query = query.Join<MediaPartRecord>().Where(m => m.FolderPath.StartsWith(folderPath));
}
else {
query = query.Join<MediaPartRecord>().Where(m => m.FolderPath == folderPath);
}
}
switch (order) {
case "title":
query = query.Join<TitlePartRecord>()
.OrderBy(x => x.Title)
.Join<MediaPartRecord>();
break;
case "modified":
query = query.Join<CommonPartRecord>()
.OrderByDescending(x => x.ModifiedUtc)
.Join<MediaPartRecord>();
break;
case "published":
query = query.Join<CommonPartRecord>()
.OrderByDescending(x => x.PublishedUtc)
.Join<MediaPartRecord>();
break;
default:
query = query.Join<CommonPartRecord>()
.OrderByDescending(x => x.CreatedUtc)
.Join<MediaPartRecord>();
break;
}
query = query.Join<MediaPartRecord>();
return query;
}
示例8: NotificationRecipientsPartHandler
public NotificationRecipientsPartHandler(Lazy<IJsonConverter> jsonConverterLazy, IContentManager contentManager)
{
OnActivated<NotificationRecipientsPart>((context, part) =>
{
part.RecipientIdsField.Loader(() =>
{
var serializedEntries = part.Retrieve<string>("RecipientsIdsSerialized");
if (string.IsNullOrEmpty(serializedEntries)) return Enumerable.Empty<int>();
return jsonConverterLazy.Value.Deserialize<IEnumerable<int>>(serializedEntries);
});
part.RecipientIdsField.Setter(recipients =>
{
Argument.ThrowIfNull(recipients, "recipients");
part.Store<string>("RecipientsIdsSerialized", jsonConverterLazy.Value.Serialize(recipients));
return recipients;
});
part.RecipientsField.Loader(() => contentManager.GetMany<IUser>(part.RecipientIds, VersionOptions.Published, new QueryHints().ExpandParts<UserPart>()));
part.RecipientsField.Setter(recipients =>
{
Argument.ThrowIfNull(recipients, "recipients");
part.RecipientIds = recipients.Select(user => user.ContentItem.Id);
return recipients;
});
part.RecipientNamesField.Loader(() => string.Join(", ", part.Recipients.Select(user => user.UserName)));
part.RecipientNamesField.Setter(names =>
{
if (string.IsNullOrEmpty(names)) return names;
var namesArray = names
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(name => name.Trim().ToLowerInvariant())
.ToArray();
// To be very thoughtful this could use IMembershipService instead, but that would mean n queries instead of 1.
part.Recipients = contentManager
.Query("User")
.Where<UserPartRecord>(record => namesArray.Contains(record.NormalizedUserName))
.List<IUser>();
return names;
});
});
}