我有一个我必须编写的应用程序,它将为我们能够作为客户端获得的每个公司使用数据库。
不幸的是,所有公司数据库的模式都不相同,即使这个应用程序都有我需要的基本信息(即使它们的列名不同/在不同的表中)。
我处理多个数据库的解决方案是创建一个IRepository接口,如:
List<User> getUsers();
List<Account> getAccounts();
void UpdateAccount(Account account);
等
我将为每个将实现此接口的数据库编写一个DAL类。该类将为其自己的数据库使用适当的LINQ datacontext:
在这里,您可以看到Lowes,HomeDepot和FrankLumber的文件夹。每个人都有一个实现IRepository的DAL类。
我的问题是,我应该在哪里处理工厂方法的实例化,这样我就可以根据他们所属的“公司”为每个登录用户持久保存一个新的DAL类实例。
因此,如果一个低级客户登录它将调用RepositoryFactory将其传递给用户并返回相应的DAL,然后我可以多态调用方法,因为我知道他们将实现上述方法。
我是ASP.NET MVC和MembershipProviders的新手,可以使用一些提示,了解如何在每个用户登录后为每个用户保留DAL实例。
答案 0 :(得分:1)
您可以在控制器操作中实例化DAL实例。如果你真的有很多动作,那么你可以考虑在一个更好的地方创建DAL实例,这个地方在动作之间共享(比如属性)
您可以坚持ASP.NET会话状态,或者每次需要时再次创建数据库上下文(只需确保每次都关闭datacontext,最好使用datacontext上的'using'关键字)< / p>