How to use multiple context in identity 2.0 using EF6 with generic services, generic repository and unityofworkAsync
We have BAL, DAL and Identity Layer
////I have applied dependency for both DbContext
public static void RegisterTypes(IUnityContainer container)
{
//unit of work.
container.RegisterType<IUnitOfWorkAsync, UnitOfWork>(new PerRequestLifetimeManager());
container.RegisterType<IUnitOfWork, UnitOfWork>(new PerRequestLifetimeManager());
//Set dependancy for unityofwork for both context
container.RegisterType<IUnitOfWorkAsync, UnitOfWork>(new PerRequestLifetimeManager(), new InjectionConstructor(new ProjectDbContext()));
container.RegisterType<IUnitOfWorkAsync, UnitOfWork>("Application", new PerRequestLifetimeManager(), new InjectionConstructor(new ApplicationDbContext()));
container.RegisterType<ICacheManager, MemoryCacheManager>(new PerRequestLifetimeManager());
//Context number one
container.RegisterType<DbContext, ProjectDbContext>(new PerRequestLifetimeManager());
container.RegisterType<IDataContextAsync, ProjectDbContext>(new PerRequestLifetimeManager());
//Context number two
container.RegisterType<DbContext, ApplicationDbContext>(new PerRequestLifetimeManager());
container.RegisterType<IDataContextAsync, ApplicationDbContext>(new PerRequestLifetimeManager());
//ApplicationDbContext Entity
container.RegisterType<IRepositoryAsync<RolePermission>, Repository<RolePermission>>(new PerRequestLifetimeManager());
container.RegisterType<IRepository<RolePermission>, Repository<RolePermission>>(new PerRequestLifetimeManager());
container.RegisterType<IBaseService<RolePermission>, BaseService<RolePermission>>(new PerRequestLifetimeManager());
//ProjectDbContext Entity
container.RegisterType<IRepositoryAsync<NurseryType>, Repository<NurseryType>>(new PerRequestLifetimeManager());
container.RegisterType<IRepository<NurseryType>, Repository<NurseryType>>(new PerRequestLifetimeManager());
container.RegisterType<IBaseService<NurseryType>, BaseService<NurseryType>>(new PerRequestLifetimeManager());
......
}
////My Controller Code ////I want to get ApplicationDbContext for _permissionModuleServices but its display Project dbcontext. /////I can get both context randomly for unitOfWork. Same as I want for services. I am using generic repository pattern. #region Constructor
//public RolePermissionController()
// : this(new UnitOfWork<ApplicationDbContext>())
//{
//}
/// <summary>
/// Initializes a new instance of the <see cref="RolePermissionController"/> class.
/// </summary>
/// <param name="_rolePermissionService">The _role permission.</param>
public RolePermissionController(
IBaseService<PermissionModule> _permissionModuleService,
IBaseService<RolePermission> _rolePermissionService,
[Dependency("Application")]IUnitOfWorkAsync _unitOfWork
)
{
this.rolePermissionService = _rolePermissionService;
this.permissionModuleService = _permissionModuleService;
this.unitOfWork = _unitOfWork;
}
#endregion