我需要的是简单地检索存储在产品中的类别列表:
Products.Select(x => x.Category).Distinct().OrderBy(x => x);
当调用它时RavenDB
说我应该使用索引而不是因为在查询期间不允许计算。
我已经阅读了一些关于索引的内容,但仍然无法弄清楚我为什么要创建索引?
到目前为止,我尝试过的是:
初始化
public class DataAccessModule : NinjectModule {
public override void Load() {
Bind<IDocumentStore>().ToMethod(
context => {
var documentStore = new EmbeddableDocumentStore {
DataDirectory = @"~/App_Data/database",
UseEmbeddedHttpServer = true,
DefaultDatabase = "SampleStore"
};
var store = documentStore.Initialize();
IndexCreation.CreateIndexes(typeof(CategoriesIndex).Assembly, store);
return store;
}
).InSingletonScope();
Bind<IDocumentSession>().ToMethod(context =>
context.Kernel.Get<IDocumentStore>().OpenSession()
).InRequestScope();
}
}
索引定义
public class CategoriesIndex : AbstractIndexCreationTask<Product> {
public CategoriesIndex() {
Map = ct => ct.Select(x => x.Categories).Distinct().OrderBy(x => x);
}
}
但这不起作用。我如何以正确的方式定义它?
谢谢!