У меня есть приложение, которое использует общий шаблон репозитория для доступа к данным. Поскольку приложение требует использования нескольких разных баз данных, я реализовал фабрику репозитория с помощью расширения Ninject Factory Extension. Это позволяет мне создавать репозитории для различных баз данных по запросу. Я просто передаю DBContext фабрике следующим образом:
private readonly IRepository database1;
private readonly IRepository database2;
public MembershipService(IRepositoryFactory repositoryFactory)
{
this.database1 = repositoryFactory.CreateRepository(new Context("Database1"));
this.database2 = repositoryFactory.CreateRepository(new Context("Database2"));
}
Что раздражает в этом коде, так это строка, необходимая для создания контекста. Строки «База данных1» и «База данных2» в приведенном выше примере. Когда приведенный выше код используется много-много раз на протяжении всего проекта, слишком просто простая опечатка может вызвать серьезные проблемы.
Как я могу исправить эту ситуацию? Следует ли мне создать фабрику контекста? Для этого все равно потребуется имя базы данных. Могу я как-нибудь использовать Enums? Я подбрасывал кучу идей, но ничего не подходило