私はちょっとグーグルに行って、これを掲示する前にこのフォーラムを検索しました。私はそれが死に至ったと推定していたからです - しかし、私は明確にこれを求めているような結果は見ませんでした。これまでに答えられた可能性はかなり高いですが、私はそれについての明確なページにつまずくことはありませんでした。IoC/DI付きのRavenDB - IDocumentStoreまたはI(非同期)DocumentSession?
依存性注入を使用すると、これはより良い方法と考えられますか? IDocumentStore
全体を注入し、必要に応じてセッションを作成するか、適切なIDocumentSession
またはIAsyncDocumentSession
を注入しますか?
これまで私はどこでもIAsyncDocumentSession
を注射しましたが、実際にはいくつかの場所で非async
セッションを使用する必要があります。私がレイヴンを間違って注射していると、これは私に考えさせてくれました。
ので、IDocumentStore
を使用すると、
public AsHandler(IDocumentStore store) { RavenStore = store; }
private IDocumentStore RavenStore { get; set; }
public async Task Handle() {
using(var session = RavenStore.OpenAsyncSession()) {
... // do stuff with an async session
}
}
...のようなものかもしれません。しかし、その後、より具体的なセッションのユースケースは、このような...
public AsHandler(IAsyncDocumentSession session) { RavenSession = session; }
private IAsyncDocumentSession RavenSession { get; set; }
public async Task Handle() {
// do stuff with an async session
}
またはそれぞれ...
ように表示されます。public AsHandler(IDocumentSession session) { RavenSession = session; }
private IDocumentSession RavenSession { get; set; }
public async Task Handle() {
// do stuff with a non-async session
}
環境設定以外にも違いはありますか?私の最初の考えは、IDocumentSession
とIAsyncDocumentSession
を使用すると、より良いライフサイクル管理が、私は間違っている可能性があります。
私は、具体的レイヴンDB 4.0(40023
)とのStructureMapで.NETのコア2.0.3を使用していますが、私は、これは任意の構成と任意のバージョンにも適用できることを断定う。