如何使用 LINQ 和 ASP.NET MVC 持久化用户与其关联的数据库?

Posted

技术标签:

【中文标题】如何使用 LINQ 和 ASP.NET MVC 持久化用户与其关联的数据库?【英文标题】:How do I persist which database a user is associated with it using LINQ and ASP.NET MVC? 【发布时间】:2010-11-01 09:12:33 【问题描述】:

我必须编写一个应用程序,该应用程序将利用我们作为客户能够获得的每家公司的数据库。

不幸的是,所有公司数据库的架构都不相同,即使对于这个应用程序,它们都有我需要的基本信息(即使它们的列名不同/在不同的表中)。

我处理多个数据库的解决方案是创建一个 IRepository 接口,例如:

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

等等

我将为每个将实现此接口的数据库编写一个 DAL 类。此类将为其自己的数据库使用适当的 LINQ 数据上下文:

您可以在此处查看 Lowes、HomeDepot 和 FrankLumber 的文件夹。每个都有一个实现 IRepository 的 DAL 类。

我的问题是,我应该在哪里处理工厂方法的实例化,以便我可以根据他们所属的“公司”为每个登录的用户保留一个新的 DAL 类实例。

因此,如果有客户登录,它将调用 RepositoryFactory,将其传递给用户并返回适当的 DAL,然后我可以多态地调用方法,因为我知道它们将实现上述方法。

我是 ASP.NET MVC 和 MembershipProviders 的新手,我可以使用一些技巧来了解如何在每个用户登录后为他们保留 DAL 的实例。

【问题讨论】:

【参考方案1】:

您可以在控制器操作中实例化 DAL 实例。如果您确实有很多操作,那么您可以考虑在更好的地方创建 DAL 实例,以便在操作之间共享(如属性)

您可以保持在 ASP.NET 会话状态,或者每次需要时再次创建数据库上下文(只要确保每次都关闭数据上下文,最好在数据上下文上使用 'using' 关键字)

【讨论】:

以上是关于如何使用 LINQ 和 ASP.NET MVC 持久化用户与其关联的数据库?的主要内容,如果未能解决你的问题,请参考以下文章

使用asp.net mvc + linq to sql如何循环输入结果集

在 sql asp.net mvc 5 中使用 linq 时如何格式化记录中的数据?

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

在不使用 LINQ 和 EF 的情况下从 ASP.NET 切换到 ASP MVC

csharp ASP.NET MVC和LINQ

ASP.NET MVC 4、EF 和 LINQ:为多对多关系创建特定的 LINQ 查询