Документы запроса RavenDB с удаленным свойством - PullRequest
2 голосов
/ 25 февраля 2012

В RavenDB Studio я вижу 69 документов CustomVariableGroup.Мой запрос возвращает только 66 из них.После некоторого поиска я вижу, что три документа, которые не возвращены, имеют новую структуру класса: свойство было удалено.Поскольку я сохранил эти три документа CustomVariableGroup, их структура отличается от остальных 66. Почему, хотя я запрашиваю все эти документы, я получаю только остальные 66 документов со старой структурой?

Оба моих C #код и мой запрос в LinqPad возвращают только 66. Вот запрос LinqPad:

Session.Query<CustomVariableGroup>().Dump();  // returns 66 docs

Но если я сделаю это, я смогу получить один из трех документов, отсутствующих в приведенном выше запросе:

Session.Query<CustomVariableGroup>().Where(x => x.Name == "Derating").Dump();

Как получить все 69 документов, возвращенных в одном запросе?

** Редактирование: Информация об индексе **

На вкладке SQL запроса LinqPad (и в выходных данных сервера Raven) индекс выглядит следующим образом:

Url: / indexes / dynamic / CustomVariableGroups? query = & start = 0 & pageSize = 128 & aggregation = None

Я не вижу этогоиндекс в Raven Studio, предположительно потому, что он динамический.

** Редактировать 2: Этот HACK работает **

Если я это сделаю, я получу все 69 документов:

Session.Query<CustomVariableGroup>().Where(x => x.Name != string.Empty).Dump();

Я предполагаю, что Ворон должен использовать старый индекс, который получает только documents, которые все еще содержат этот удаленный столбец.Мне как-то нужно использовать новый / другой индекс ...

Интересно, это не работает;он возвращает только 66:

Session.Query<CustomVariableGroup>().Where(x => x.Id != string.Empty).Dump();

** Редактировать 3: Этот HACK также работает **

Session.Advanced.LuceneQuery<CustomVariableGroup>("Raven/DocumentsByEntityName").Where("Tag:CustomVariableGroups").Dump();

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

Индекс со старым свойством пришлось удалить.

** До ** Это не сработало (возвратили только 66 из 69 документов):

Session.Query<CustomVariableGroup>().Dump();

** Исправлено ** Удалить индекс, который использовал старое свойство, которое было удалено из моего класса C #:

В Raven Studio я удалил этот индекс: Auto / CustomVariableGroups / ByApplicationId

** После ** Этот же запрос теперь возвращает все 69 документов:

Session.Query<CustomVariableGroup>().Dump();

Теперь я не уверен, почему эти запросы будут использовать этот индекс. Я запрашиваю все документы CustomVariableGroup, а не ByApplicationId. Однако удаление этого индекса исправило это. Я уверен, что кто-то еще может объяснить, почему.

0 голосов
/ 26 февраля 2012

Может ли это быть устаревший индекс ... если он не возвращает все ожидаемые результаты.

Вы можете использовать

.Customize (x => x.WaitForNonStaleResultsAsOfLastWrite ())

0 голосов
/ 25 февраля 2012

Как выглядят индексы?Вы вручную создавали индексы или они создавались динамически?Просто интересно, если это является причиной проблемы, основываясь на ваших комментариях выше, что произошло изменение структуры объекта

- S

...