Если у меня есть статический индекс в RavenDB который выглядит следующим образом:RavenDB Вложенный Объект Проекция от Static Index
public class TestIndex : AbstractIndexCreationTask<CardApplication>
{
public TestIndex()
{
Map = apps =>
from app in apps
select new { State = app.State, };
Sort(c => c.State, Raven.Abstractions.Indexing.SortOptions.String);
}
}
И тогда я пытаюсь запросить его с помощью:
session.Query<CardApplication, TestIndex>()
.OrderBy(c => c.State)
.Select(c => new { c.State, c.IdentityDetails.Applicant.FirstName, })
.ToList();
я получаю результаты обратно где заданы свойства State, но свойства FirstName равны нулю.
Когда я смотрю HTTP-запросы, которые RavenDB отправляет по проводу, я нахожу, что он использует параметр строки запроса: fetch=IdentityDetails_Applicant_FirstName
. Если я изменю это на fetch=IdentityDetails.Applicant.FirstName
и переиздаю запрос, я верну правильные результаты (по крайней мере, в возвращенном JSON я могу увидеть результаты FirstName).
Если я сделать подобный запрос с использованием динамических индексов:
session.Query<CardApplication>()
.OrderBy(c => c.State)
.Select(c => new { c.State, c.IdentityDetails.Applicant.FirstName, })
.ToList();
я получаю правильные результаты назад, и я замечаю, что RavenDB послал правильный разделенных точками пути в запросе HTTP, а не сломанный подчеркивание разделило одно.
Как я могу заставить эту проекцию вложенных объектов работать со статическими индексами?
Спасибо! Почему мне не нужно сохранять свойство State, но мне нужно хранить FirstName? Даже если я удалю Сорт, я все равно верну свое значение. Это связано с тем, что это тип Enum, а не строка? –