4
我有一個使用文檔的應用程序,它包含字典中的屬性列表,出於某種原因,我們需要使用靜態索引並對這些屬性使用查詢/篩選。字典上的RavenDB靜態索引
原型是這樣的:
class Program
{
static void Main(string[] args)
{
IDocumentStore store = new DocumentStore() { DefaultDatabase = "Test", Url = "http://localhost:8081" };
store.Initialize();
IndexCreation.CreateIndexes(typeof(Program).Assembly, store);
using (var session = store.OpenSession())
{
session.Store(new Document { Id = "1", Name = "doc_name", Attributes = new Dictionary<string, object> { { "Type", "1" }, { "Status", "Active" } } });
session.SaveChanges();
}
using (var session = store.OpenSession())
{
// works
var l1 = session.Query<Document, Documents_Index>().Where(a => a.Attributes["Type"] == "1").ToList();
// not working
var l2 = session.Query<Document, Documents_Index>().Where(a => a.Attributes["Status"] == "Active").ToList();
}
}
}
public class Documents_Index : AbstractIndexCreationTask<Document>
{
public Documents_Index()
{
Map = docs => docs.Select(a =>
new
{
a.Name,
a.Attributes,
Attributes_Type = a.Attributes["Type"]
});
}
}
[Serializable]
public class Document
{
public string Id { get; set; }
public string Name { get; set; }
public Dictionary<string, object> Attributes { get; set; }
}
但因爲我需要使用任意的屬性名稱/值查詢這個指數並解決我們的問題。實際上,屬性列表在運行時是已知的(所以我們嘗試修改Map表達式以注入任意數量的屬性名稱,但迄今爲止我們不成功)。有沒有辦法以某種動態的方式定義索引?
作品像預期,但實現了「_」屬性名稱是非常重要的,而不是改變 – puco 2012-07-13 09:19:30