Ошибки индексации RavenDB - PullRequest
2 голосов
/ 14 января 2012

Я только начинаю работать с Raven, и созданный мной индекс не может ничего индексировать.Я обнаружил много ошибок на сервере Raven, которые выглядят так:

{
    Index: "HomeBlurb/IncludeTotalCosts",
    Error: "Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)",
    Timestamp: "2012-01-14T15:40:40.8943226Z",
    Document: null
}

Созданный мной индекс выглядит так:

public class HomeBlurb_IncludeTotalCosts : AbstractIndexCreationTask<MPDocument, HomeBlurb_IncludeTotalCosts.ReduceResult>
{
    public class ReduceResult 
    {
        public string Name { get; set; }
        public string Constituency { get; set; }
        public decimal AmountPaid { get; set; }
    }

    public HomeBlurb_IncludeTotalCosts()
    {
        Map = mps => from mp in mps
                            from expense in mp.Expenses
                            select new
                            {
                                mp.Name,
                                mp.Constituency,
                                AmountPaid = expense.AmountPaid ?? 0M
                            };

        Reduce = results => from result in results
                            group result by new { result.Name, result.Constituency } 
                            into g
                            select new
                            {
                                g.Key.Name,
                                g.Key.Constituency,
                                AmountPaid = g.Sum(x => x.AmountPaid)
                            };
    }
}

Индекс создаетсяRaven (смотрит на него через Raven Studio) и, кажется, все в порядке.

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

Что может быть причиной проблемы?

1 Ответ

0 голосов
/ 14 января 2012

Проблема в этой строке:

              AmountPaid = g.Sum(x => x.AmountPaid)

Замените это на:

              AmountPaid = g.Sum(x => (double)x.AmountPaid)
...