我有一個Web項目,我希望它與ravendb和ravendb嵌入式工作。所以這就是我認爲我應該解決的問題。在StructureMap使用註冊表來創建一個可插拔architechture
兩個項目,MvcRavendb和MvcRavendb-Embedded,其中兩個項目引用兩個不同的nuget包,一個用於ravendb,一個用於嵌入ravendb。
在我的核心項目,我有一個接口IDocumentStoreInitializer其中有一個方法,IDocumentStore InitializeDocumentStore()
MvcRavenDb和MvcRavenDb,內嵌有一類這樣的
public class RegisterRavenDb : IDocumentStoreInitializer {
public IDocumentStore InitializeDocumentStore() {
return new DocumentStore OR EmbeddableDocumentStore();
}
}
然後我有一個註冊類這樣的具體實現
public class RavenRegistry : Registry {
public RavenRegistry() {
For<IDocumentStoreInitializer>().Use<RegisterRavenDb>();
}
}
到目前爲止這麼好,但後來我有bootstrapper配置stru cturemap像這樣
public class Bootstrapper {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
// here I want to use the registered concrete implmentaiton of IDocumentStore
var documentStore = new DocumentStore { ConnectionStringName = "RavenDB" };
documentStore.Initialize();
}
}
}
那麼我怎樣才能告訴結構圖從RavenRegistry類使用InitializeDocumentStore? 也許我錯過了一些東西還是我採取了錯誤的方式在這裏
沒關係啊我明白了,謝謝! – Marcus
我是否需要添加NuGet包兩個RavenDB和RavenDB,嵌入式?當我嘗試使用connectionstring Url = http:// localhost:8080創建EmbeddableDocumentStore時,它將返回null。 – Marcus
似乎embeddabledocumentstore不能用connectionstringname初始化?如果我在創建它的實例時直接使用URL或DataDirectory。 – Marcus