我正在开发一个使用一个数据库的项目(Web 应用程序 - ASP.NET MVC)。到目前为止,说数据库为一个客户端保存记录,但现在我需要将其转换为多客户端数据库。这个想法是我们在数据库中的每个表中添加一个列(例如 CompanyId),并且在查询中只考虑具有特定 CompanyId 的记录。
不幸的是,该项目现在已经相当发达,为每个服务调用、每个 Linq 查询等添加额外的参数真的很麻烦。我知道从一开始就应该以这种方式(多客户端)来处理它,现在我为此付出了代价。
所以我有两个选择:
单一数据库 - 问题是如何告诉 EF 只考虑具有 CompanyId = X 的记录,而不是在每个 Linq 查询中写入 Where(i => i.CompanyId == X) 。
一个 DB = 一个客户 - 为每个客户创建一个 db 似乎是一个很好的解决方案,但在我们的项目中,用户可以访问多个数据库(客户可以与许多公司相关联,并被要求在他想要的公司的上下文中进行选择一起工作,他可以自由地改变它)。pronblem 是我真的不知道如何在运行时更改连接字符串,我不知道这个解决方案是否可以。
您能否告诉我哪个选项更好以及如何处理?先感谢您。