RavenDb Transform Не может преобразовать строку в ноль - PullRequest
1 голос
/ 26 января 2012

Я создал следующий индекс:

public class LawDisadvantagesForListIndex : AbstractIndexCreationTask<LawDisadvantage, LawDisadvantagesForListIndex.IndexResult>
{
    public class IndexResult
    {
        public string Id { get; set; }
        public long Rating { get; set; }
   }

    public class LawDisadvantageForList
    {
        public string Id { get; set; }
        public long Rating { get; set; }
        public long CommentsCount { get; set; }
    }

    public LawDisadvantagesForListIndex()
    {
        Map = lawDisadvantages => from lawDisadvantage in lawDisadvantages
                                  from vote in lawDisadvantage.Votes
                                  select new {Id = lawDisadvantage.Id, Rating = vote.Value};

        Reduce = (lawDisadvantages => from lawDisadvantage in lawDisadvantages
                                      group lawDisadvantage by lawDisadvantage.Id
                                      into agg
                                      select new
                                                 {
                                                     Id = agg.Key,
                                                     Rating = agg.Sum(x => x.Rating)
                                                 });

        TransformResults = (database, indexResults) => from indexResult in indexResults
                                                       let lawDisadvantage = database.Load<LawDisadvantage>(indexResult.Id)
                                                       select new
                                                                  {
                                                                      Id = lawDisadvantage.Id,
                                                                      Rating = indexResult.Rating,
                                                                      CommentsCount = lawDisadvantage.Comments.Count
                                                                  };
    }
}

Поэтому я беру документ LawDisadvantage, обрабатываю его с помощью MapReduce, а затем добавляю некоторые дополнительные поля путем преобразования.Но в результате я получаю сообщение об исключении "System.InvalidOperationException: функция результатов преобразования не выполнена. Doc '', Error: Невозможно преобразовать тип 'string' в 'long'".Источником исключения является предложение "indexResult.Rating".

Кстати, этот вопрос выглядит актуальным.

Обновление. Я обновился допоследняя нестабильная версия - исправлено

1 Ответ

1 голос
/ 27 января 2012

Кастинг, который вам нужно было выполнять в индексах, долгое время был раздражающей проблемой в RavenDB.За кулисами индекс, который вы пишете, конвертируется из текста в код.Тем не менее, чтобы сделать его более гибким (без схемы), он работает с использованием динамических типов, но при этом необходимо выполнить определенную часть преобразования.проблема больше не будет отображаться, см. эту тему для получения дополнительной информации.

...