Опитвам се да изпълня заявка с помощта на API за търсене на Sitecore 7. Заявката съдържа няколко клаузи DateTime where. В примера по-долу EffectiveFrom и EffectiveTo са свойства DateTime.
var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var context = index.CreateSearchContext())
{
var schedules = context.GetQueryable<ScheduleSearchResultItem>()
.Where(item => item.EffectiveFrom <= DateTime.Now)
.Where(item => item.EffectiveTo >= DateTime.Now);
foreach (var schedule in schedules)
{
//...
}
}
ScheduleSearchResultItem
наследява от Sitecore.ContentSearch.SearchTypes.SearchResultItem
и изглежда по следния начин:
/// <summary>
/// Search result item for event schedules
/// </summary>
public class ScheduleSearchResultItem : SearchResultItem
{
/// <summary>
/// EffectiveFrom field
/// </summary>
[TypeConverter(typeof(IndexFieldDateTimeValueConverter))]
[IndexField("effectivefrom")]
public DateTime EffectiveFrom { get; set; }
/// <summary>
/// EffectiveTo field
/// </summary>
[TypeConverter(typeof(IndexFieldDateTimeValueConverter))]
[IndexField("effectiveto")]
public DateTime EffectiveTo { get; set; }
// ...
}
Това работеше с първоначалната версия на Sitecore 7, но сега извежда грешка „Низът не беше разпознат като валидна дата и час.“ в Sitecore 7 Update-1.
Опитах десетки конфигурации на индекси, както и добавяне и премахване на атрибута IndexFieldDateTimeValueConverter
на моя ScheduleSearchResultItem
. Потвърдих чрез Luke, че тези елементи съдържат дати във формат ггггММдд. Въпреки това не всички мои артикули имат полета effective from и effective to.
Някой друг да изпитва същото поведение?