必要なのは、製品に保存されているカテゴリのリストを取得することです。
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);
}
}
しかし、これはうまくいきません。どうすれば正しい方法で定義できますか?
ありがとう!