我有一个我必须编写的应用程序,它将利用我们作为客户能够获得的每家公司的数据库。
不幸的是,所有公司数据库的架构都不相同,即使对于这个应用程序,它们都有我需要的基本信息(即使它们的列名不同/在不同的表中)。
我处理多个数据库的解决方案是创建一个 IRepository 接口,例如:
List<User> getUsers();
List<Account> getAccounts();
void UpdateAccount(Account account);
等等
我将为每个将实现此接口的数据库编写一个 DAL 类。此类将为其自己的数据库使用适当的 LINQ 数据上下文:
在这里,您可以看到 Lowes、HomeDepot 和 FrankLumber 的文件夹。每个都有一个实现 IRepository 的 DAL 类。
我的问题是,我应该在哪里处理工厂方法的实例化,以便我可以根据他们所属的“公司”为每个登录的用户保留一个新的 DAL 类实例。
因此,如果一个lowes 客户登录,它将调用RepositoryFactory 并传递给用户并返回适当的DAL,然后我可以多态地调用方法,因为我知道他们将实现上述方法。
我是 ASP.NET MVC 和 MembershipProviders 的新手,可以使用一些技巧来说明如何在每个用户登录后为他们保留 DAL 的实例。