3

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

不幸的是,该项目现在已经相当发达,为每个服务调用、每个 Linq 查询等添加额外的参数真的很麻烦。我知道从一开始就应该以这种方式(多客户端)来处理它,现在我为此付出了代价。

所以我有两个选择:

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

  2. 一个 DB = 一个客户 - 为每个客户创建一个 db 似乎是一个很好的解决方案,但在我们的项目中,用户可以访问多个数据库(客户可以与许多公司相关联,并被要求在他想要的公司的上下文中进行选择一起工作,他可以​​自由地改变它)。pronblem 是我真的不知道如何在运行时更改连接字符串,我不知道这个解决方案是否可以。

您能否告诉我哪个选项更好以及如何处理?先感谢您。

4

1 回答 1

0

为什么你没有为每家公司提供单独但相同的模式。然后,您可以根据所选公司注入正确的数据库上下文对象。通过这种方式,您可以避免主要的数据库编辑,也可以避免公司 id 的条件。

于 2013-04-19T13:40:25.533 回答