2014-02-18 45 views
1

使用簡單的查詢查詢RavenDB時,autoindex非常沒用,因爲SortOptions始終設置爲String,即使該屬性是整數。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

默認情況下,它將根據字符串進行排序。如果你想自定義行爲,你必須編寫索引。

...這並不需要太多的時間

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); 
    } 
} 

而現在它可以作爲你的期望。

+0

這是正確的答案。但是將每個字段視爲字符串用於自動索引使得自動索引功能非常無用。即使你自動索引也行(如果數字被視爲數字),你必須編寫所有的鍋爐板代碼,因爲自動生成的代碼只使用字符串。 – ozu