RavenDB自动索引:数字字段的搜索选项错误(SortOptions.String)

时间:2014-02-18 21:34:29

标签: ravendb

使用简单查询查询RavenDB时,自动索引非常无用,因为即使属性是整数,SortOptions也始终设置为String。

var test = session.Query<Cup>()
    .OrderBy(o => o.Order)
    .ToList();


public class Cup
{
    public string Id { get; set; }
    public string Name { get; set; }
    public int Order { get; set; }
}

我真的必须手动制作静态索引吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,它将按字符串排序。如果要自定义行为,则必须编写索引。

......这不需要太多时间

public class Cup_ByOrder : AbstractIndexCreationTask<Cup>
{
   public Cup_ByOrder()
   {
      Map = cups => from cup in cups
                    select new
                    {
                       cup.Order
                    }

      Sort(x=>x.Order, SortOptions.Int);
   }
}

在您的应用程序加载中,通过以下方式添加索引:

// Assuming ASP.NET
public class Global
{
   public static IDocumentStore Store;

   public void Application_Start(object sender, EventArgs e)
   {
      Store = new DocumentStore  { ... }.Initialize();
      Indexes.CreateIndexes(typeof(Cup_ByOrder).Assembly, Store);
   }
}

现在它按预期工作。