Как исправить ошибку, выполнив запрос к индексу RavenDB по идентификатору с учетом неиндексированной ошибки? - PullRequest
1 голос
/ 22 декабря 2011

У меня есть база данных RavenDB с двумя коллекциями документов. Мне нужно объединить документы из этих двух документов в одну бизнес-единицу, используя мультикарту / сокращение индекса. Бизнес-сущность не завершена, если я не объединю две коллекции. Вы, вероятно, могли бы утверждать, что это указывает на то, что моя модель предметной области или модель данных повреждена, но это то, что есть, и я ничего не могу с этим поделать. Итак, по вопросу: -).

В основном три документа:

{ // RootDocuments/1
    "Foo" : "Bar",
    "Bar" : "Foo"
}

{ // ExtraDocuments/1
    "RootId" : "RootDocuments/1",
    "Value" : 2
}

{ // ExtraDocuments/2
    "RootId" : "RootDocuments/1",
    "Value" : 3
}

объединяется в следующее по индексу:

{
    "Id" : "RootDocuments/1",
    "Foo" : "Bar",
    "Bar" : "Foo",
    "Value" : 5 // The sum of values from the extra documents.
}

Поскольку мне всегда нужно объединять две коллекции с моим индексом мультикарты, даже для получения объекта на основе идентификатора необходимо выполнять запрос с использованием индекса. Когда я делаю запрос, похожий на

session.Query<RootDocumentsByIdIndex.Result, RootDocumentsByIdIndex>().Where(d => d.Id == id).Single();

Я получаю следующую ошибку:

System.ArgumentException: поле '__document_id' не проиндексировано, не может запрашивать поля, которые не проиндексированы

Могу ли я заставить RavenDB индексировать поле Id? Или есть другой способ сделать этот запрос?

...