2012-01-14 156 views
2

我刚刚开始使用Raven,并且我创建的索引一直未能为任何索引编制索引。我发现很多看起来像这样的乌鸦服务器上的错误:RavenDB索引错误

{ 
    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 Studio)并且看起来很好。

真正引发我的是,我使用的文件不包含任何双打或整数,我存储的唯一数字是小数。

什么可能导致问题?

+0

哪个构建您使用:

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

替换为这个?我只是在一个使用573的小型演示中尝试过你的索引,它没有任何问题,没有看到任何索引错误。 – 2012-01-14 16:24:50

+0

我也使用573。 – ilivewithian 2012-01-14 16:44:25

+0

我删除并替换了所有的项目引用,重建客户端,重新启动服务器并重新导入数据,现在看起来一切正常。 – ilivewithian 2012-01-14 17:04:09

回答

0

的问题是在这条线:

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

经过多一点挖掘,如果我创建没有转换的索引,然后在之后添加转换(作为对索引的唯一更改),它仍然存在问题。如果我通过乌鸦工作室删除索引,然后再次创建索引(在演员就位)它运行良好。我会尝试创建一个仓库,并将其中的错误报告。 – ilivewithian 2012-01-14 17:15:44

+0

不,铸造不是问题。这个为我工作:https://gist.github.com/1612214 – 2012-01-14 17:37:13