Где-то между Sitecore 7.2 и 8.0 сохранена измененная логика того, как изменились пустые поля даты (то есть поля даты, для которых редактор содержимого не выбрал значение). Они были сохранены как DateTime.MinValue
(то есть 00010101
); однако теперь они хранятся как пустая строка. Под Sitecore 7.2 я использовал, чтобы иметь возможность запускать следующую строку кода, чтобы найти все элементы, которые не имеют никакого значения, выбранного для данного поля даты:Поиск пустых полей даты в индексе
var myQuery = _searchContext.GetQueryable<MyClass>.Where(item => item.MyDateField == DateTime.MinValue);
вызвавшего последующих Lucene запрос: +mydatefield: 00010101
Это конечно, больше не работает, поскольку значение поля в индексе является пустой строкой. Я не совсем уверен, как использовать API ContentSearch
для настройки запроса, поскольку DateTime нельзя сравнивать с нулевым или пустым строковым значением. Мне интересно, есть ли способ запросить этот новый формат или мне нужно изучить, как Sitecore хранит пустые значения даты в соответствии со старым форматом.
Можете ли вы попытаться добавить строковое свойство в свой 'MyClass' под названием' MyDateStringField' и использовать его для этого пустого поиска даты. Любой может использовать ваш «MyDateField» для всех других операций? –
К сожалению, это не сработало. 'MyDateStringField ==" "' переведен на '+ MatchNoDocsQuery []' – Kyle