У меня есть приложение, которое я должен написать, которое будет использовать базу данных для каждой компании, которую мы можем получить как клиент.
К сожалению, схемы для всех баз данных компаний не идентичны, хотя для этого приложения все они имеют основную информацию, которая мне нужна (даже если имена их столбцов разные / в другой таблице).
Мое решение для работы с несколькими базами данных заключается в создании интерфейса IRepository, например:
List<User> getUsers();
List<Account> getAccounts();
void UpdateAccount(Account account);
и т.д.
Я напишу класс DAL для каждой базы данных, которая будет реализовывать этот интерфейс. Этот класс будет использовать соответствующий текст данных LINQ для своей собственной базы данных:
Здесь вы можете увидеть папки для Lowes, HomeDepot и FrankLumber. Каждый из них имеет класс DAL, который реализует IRepository.
У меня вопрос: где я должен обрабатывать создание экземпляра фабричного метода, чтобы я мог сохранить новый экземпляр класса DAL для каждого пользователя, который входит в систему, в зависимости от того, к какой «компании» он принадлежит.
Таким образом, если клиент регистрируется в журнале lowes, он вызывает RepositoryFactory, передавая ему пользователя, и возвращает соответствующий DAL, который я затем могу вызывать полиморфно, так как знаю, что они реализуют указанные выше методы.
Я новичок в ASP.NET MVC и MembershipProviders и могу воспользоваться некоторыми советами о том, как сохранить экземпляр DAL для каждого пользователя после входа в систему.