Вы можете использовать функцию Проекции RavenDB для преобразования.
Это просто меняет форму документа Json после того, как RavenDB извлек его из хранилища документов, поэтому поля не должны быть помечены как Stored
, чтобы он работал
public PostsForList()
{
Map = posts => from post in posts
select
new
{
Id = post.Id,
Title = post.Title,
CommentsCount = post.Comments,
};
TransformResults =
(database, posts) => from post in posts
select new { post.Id, post.Title, post.CommentsCount };
}
Вам по-прежнему нужно .As<new type>
при запросе этого индекса, в противном случае RavenDB будет жаловаться.Примерно так:
session.Query<Post, PostTitleCommentsCount>()
.Where(x => x.Title == "blah")
.As<PostTitleCommentsCount>()
.ToList();
Чаще всего он используется для разрешения объединений, см. в этом блоге для получения дополнительной информации, но он работает и в этом сценарии.