希望能够提供一个关于使用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”) –