实体框架 - 仅考虑符合特定标准的记录

时间:2013-04-19 13:24:33

标签: asp.net-mvc entity-framework multi-user

我正在开发一个使用一个数据库的项目(Web应用程序 - ASP.NET MVC)。到目前为止,所述数据库保留了一个客户端的记录,但现在我需要将其转换为多客户端数据库。我们的想法是,我们在DB中的每个表中添加一个列(例如,CompanyId),并且在查询中仅考虑具有特定CompanyId的记录。

不幸的是,该项目现在非常发达,并为每个服务调用添加额外的参数,每个Linq查询等都会非常麻烦。我知道它应该从一开始就接近这种方式(多客户端),现在我付钱给它。

所以我有两个选择:

  1. 单个数据库 - 问题是如何告诉EF只考虑具有CompanyId = X的记录,而不是在每个Linq查询中写入Where(i => i.CompanyId == X)。

  2. 一个DB =一个客户端 - 为每个客户端创建一个数据库似乎是一个非常好的解决方案,但在我们的项目中,用户可以访问多个数据库(客户端可以与许多公司关联,并被要求选择他想与哪家公司合作的背景,他可以自由地改变它。问题是我真的不知道如何在运行时更改连接字符串,我不知道这个解决方案是否正常。

  3. 您能否告诉我哪个选项更好以及如何处理? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

为什么不为每个公司分别但相同的模式。然后,您可以根据所选公司注入正确的db上下文对象。通过这种方式,您可以避免主要的数据库重编,并避免公司ID上的条件。