0

我无法找到有关如何针对信息集部分执行 HQLQuery 的任何示例。我正在构建一个自定义日历/事件管理模块,需要查询即将发生的事件。我正在使用严格的信息集(没有 EventPartRecord 类),但是我似乎无法正确查询。

每个日历可以有多个要显示的事件类别,每个事件也可以有多个要显示的事件类别。

下面的代码产生代码后发布的错误:

    public IEnumerable<EventPart> GetUpcomingEventsForCalendar(CalendarPart calendar, 
        VersionOptions versionOptions, int count)
    {
        versionOptions = versionOptions ?? VersionOptions.Published;

        string[] ids = calendar.EventCategoryIds;

        var events = _contentManager.HqlQuery()
            .ForPart<EventPart>()
            .Where(alias => alias.ContentItem() ,a=>
                a.And(x => x.Ge("StartDate", DateTime.Today), y => y.InG("EventCategoryIds", ids)))
            .OrderBy(x => x.ContentItem(), order => order.Asc("StartDate"))
            .Slice(0, count);

        return events;
    }

错误:

Orchard.ContentManagement.Drivers.Coordinators.ContentPartDriverCoordinator: 
ERROR - QueryException thrown from IContentPartDriver by
Web.Module.Events.Drivers.CalendarWidgetPartDriver
NHibernate.QueryException: could not resolve property: StartDate of: 
Orchard.ContentManagement.Records.ContentItemRecord [select distinct civ.Id as Id, 
ci.StartDate
from Orchard.ContentManagement.Records.ContentItemVersionRecord as civ
join civ.ContentItemRecord as ci
where (ci.StartDate >= '2014-06-06 07:43:50' and ci.EventCategoryIds in
('2e1ab64c61434df78b7112a2142089bc') ) AND (civ.Published = True)
order by ci.StartDate]
4

1 回答 1

1

您不能查询仅保留在InfosetPart. 如果您需要查询某个部件的某些属性,您需要有一个包含这些属性的支持记录 - 经典方式。

于 2014-06-09T21:12:01.917 回答