I'm using Generic Repository to interact with Database(I'm using EF6.0)
I'm using two Databases.
Ninject has been using to implement DI.
Sample code snippet below.
1. Generic Repository
public class GenericRepository<T> :
IGenericRepository<T>
where T : class
{
public GenericRepository(DbContext DbContext)
{
_entities = DbContext;
}
private DbContext _entities;
2. DB Context (I want to introduce one more DBContext for another Database)
public class DatabaseContext: DbContext
{
public DbSet<ReferenceCodeValue> ReferenceValues { get; set; }
public DbSet<ReferenceDataType> ReferenceTypes { get; set; }
static DatabaseContext()
{
Database.SetInitializer<DatabaseContext>(null);
}
3. Register the DB Context using Ninject
internal static class DependencyRegistry
{
[DependencyRegistrar]
public static void Register(Dependency Container)
{
Container.
RegisterPerRequestScopeType<DbContext, DatabaseContext>();
}
};
4. Domain Service-where I'm invoking the generic repository through constructor injection
internal class AdministrationDomain : DomainElement, IAdministrationDomain
{
private IGenericRepository<DTO.ReferenceDataType> _referenceTypeRepo;
private IGenericRepository<DTO.ReferenceCodeValue> _referenceValueRepo;
public AdministrationDomain(
IGenericRepository<DTO.ReferenceDataType> referenceTypeRepo,
IGenericRepository<DTO.ReferenceCodeValue> referenceValueRepo)
{
_referenceTypeRepo = referenceTypeRepo;
_referenceValueRepo = referenceValueRepo;
}
I want to use the same IGenericRepository with two implementations one for Database1 and another one Database2.
I tried Named binding to register
Container.
RegisterPerRequestScopeType<DbContext, DatabaseContext>().Named("DB1";
Container.
RegisterPerRequestScopeType<DbContext, AppContext>().Named("DB2");
the DatabaseContext has been overriden by AppContext. how I can resolve the issue?