Я использую Entity Framework (сначала код), репозитории и шаблон единицы работы, как описано здесь: Entity Framework 4 CTP 4 / CTP 5 Общий шаблон репозитория и возможность модульного тестирования
Я также использую StructureMap для управления экземплярами своих объектов, и у меня есть такой код, как этот, связывающий EF dbcontext и единицу работы:
For<DbContext>().HybridHttpOrThreadLocalScoped().Use<MyDbContext>();
For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();
У меня также есть общий Repository<T>
, который в настоящее время знает об экземпляре MyDbContext
. Теперь мне нужно иметь возможность поддерживать несколько баз данных и, следовательно, несколько DbContexts. Я подумываю о том, чтобы изменить мой IUnitOfWork
на IUnitOfWork<T>
, где T — это DbContext
для использования. Но мой репозиторий также должен знать, какой DbContext
использовать, так что мне нужно сделать его дважды общим (например, Repository<TEntity,TDbContext>
)?
Каков наилучший и самый простой способ поддержки нескольких баз данных с помощью шаблона UnitOfWork, который я использую?