Я пытаюсь выполнить запрос с помощью 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
. Через Люка я подтвердил, что эти элементы действительно содержат даты в формате ггггММдд. Тем не менее, не все мои элементы имеют поля Effectivefrom и Effectiveto.
Кто-нибудь еще испытывает такое же поведение?