Как мне сохранить, с какой базой данных связан пользователь, используя LINQ и ASP.NET MVC? - PullRequest
0 голосов
/ 09 июня 2009

У меня есть приложение, которое я должен написать, которое будет использовать базу данных для каждой компании, которую мы можем получить как клиент.

К сожалению, схемы для всех баз данных компаний не идентичны, хотя для этого приложения все они имеют основную информацию, которая мне нужна (даже если имена их столбцов разные / в другой таблице).

Мое решение для работы с несколькими базами данных заключается в создании интерфейса IRepository, например:

List<User> getUsers();
List<Account> getAccounts();
void UpdateAccount(Account account);

и т.д.

Я напишу класс DAL для каждой базы данных, которая будет реализовывать этот интерфейс. Этот класс будет использовать соответствующий текст данных LINQ для своей собственной базы данных:

alt text

Здесь вы можете увидеть папки для Lowes, HomeDepot и FrankLumber. Каждый из них имеет класс DAL, который реализует IRepository.

У меня вопрос: где я должен обрабатывать создание экземпляра фабричного метода, чтобы я мог сохранить новый экземпляр класса DAL для каждого пользователя, который входит в систему, в зависимости от того, к какой «компании» он принадлежит.

Таким образом, если клиент регистрируется в журнале lowes, он вызывает RepositoryFactory, передавая ему пользователя, и возвращает соответствующий DAL, который я затем могу вызывать полиморфно, так как знаю, что они реализуют указанные выше методы.

Я новичок в ASP.NET MVC и MembershipProviders и могу воспользоваться некоторыми советами о том, как сохранить экземпляр DAL для каждого пользователя после входа в систему.

1 Ответ

1 голос
/ 09 июня 2009

Вы можете создавать экземпляры DAL в действиях вашего контроллера. Если у вас действительно много действий, то вы можете подумать о создании экземпляра DAL в каком-то лучшем месте, которое будет совместно использоваться действиями (например, атрибутами)

Вы можете сохранить состояние сеанса ASP.NET или создавать контекст базы данных каждый раз, когда вам это нужно (просто убедитесь, что вы снова закрываете текстовый текст данных, лучше всего используйте ключевое слово 'using' в текстовом данных)

...