希望能夠提供一個關於使用Unity和依賴注入的快速問題。我瀏覽過stackoverflow和搜索引擎,但還沒有找到這是可能的。將Unity中的不同DbContext映射到存儲庫接口的不同實例
我實際上有兩個不同的dbcontexts和我想用於上下文的通用存儲庫。
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType<DbContext, DBContext1>(new PerResolveLifetimeManager());
container.RegisterType(typeof(IRepository<>), typeof(Repository<>));
container.RegisterType<DbContext, DBContext2>(new PerResolveLifetimeManager());
container.RegisterType(typeof(IRepository<>), typeof(Repository<>));
container.RegisterType<IUnitOfWork, UnitOfWork>();
......
container.RegisterType<IGenderService, GenderService>();
container.RegisterType<ILanguageService, LanguageService>();
.......
container.RegisterType<IPhotoService, PhotoService>();
}
但是,當我調用IPhotoService時,Visual Studio會拋出一個錯誤,說模型(照片)不是上下文的一部分。這是由於Photo模型位於DBContext1中,但在代碼中稍後使用DBContext2覆蓋IRepository映射。
有沒有一種辦法:
名這些不同的DbContext映射
有兩個不同的IRepository映射到不同的DbContexts
注入一個名爲IRepository映射到具體類例如照片服務?
感謝
我不知道Unity,但在StructureMap中,您可以命名上下文以便您可以通過調用它來解析實現,如下所示:Container.Resolve().Named(「ThisOne」) –