使用简单查询查询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; }
}
我真的必须手动制作静态索引吗?
答案 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);
}
}
现在它按预期工作。