ASP.NET MVC3 上に構築された個人のブログ プロジェクトに RavenDB を使用したいと考えています。
私は自分のソリューションに複数のプロジェクトを持ちたいので、Web プロジェクトが呼び出すデータストアとして RavenDB を使用するブログ エンジンとして、1 つの Web プロジェクトと別のクラス ライブラリを用意します。
RavenDB をクラス ライブラリから使用できるようにするには、どのように設定すればよいですか?
ASP.NET MVC3 上に構築された個人のブログ プロジェクトに RavenDB を使用したいと考えています。
私は自分のソリューションに複数のプロジェクトを持ちたいので、Web プロジェクトが呼び出すデータストアとして RavenDB を使用するブログ エンジンとして、1 つの Web プロジェクトと別のクラス ライブラリを用意します。
RavenDB をクラス ライブラリから使用できるようにするには、どのように設定すればよいですか?
検討できるオプションの 1 つは、制御の反転 / 依存性注入を使用して DocumentStore のインスタンスをシングルトンとして作成し、コンストラクターを介してサービスに注入することです。私は Munq を使用しているので、私の例ではそれを使用しますが、考慮すべき IOC フレームワークは他にもたくさんあります。
// In your Global.asax Application_Start
// MUNQ. This will give you a RavenDB IDocumentStore as Singleton
var ioc = MunqDependencyResolver.Container;
ioc.Register<IDocumentStore>(c => InitializeRaven()).WithLifetimeManager(new ContainerLifetime());
// Initialize yourself some RavenDB
public static IDocumentStore InitializeRaven()
{
DocumentStore instance = new DocumentStore { Url = "http://localhost:8080/" };
instance.Initialize();
return instance;
}
これにより、アプリケーションの存続期間全体で使用する DocumentStore の単一のインスタンスが取得されます。
これは、追加のガイダンスを提供するスタック オーバーフローの質問です (Autofac):
ASP.NET MVC 3、RavenDB、および Autofac Issue Plus 2 その他の Autofac に関する質問
そして、それを使用する MSNBC の例 (Ninject):
RavenDB に関するチュートリアルやドキュメントを読みましたか? データベースに接続してクエリを実行できる を作成しDocumentStore
ます。
public IEnumerable<Company> GetCompanies()
{
using (var dc = new DocumentStore("localhost", 8080).Initialize())
using (var session = dc.OpenSession())
{
return session
.Query<Company>("regionIndex")
.Where("Region:Europe")
.ToArray();
}
}