我正在开发一个项目(Web应用程序 - ASP.NET MVC),它使用一个数据库。直到现在,该数据库仅保留一个客户的记录,但现在我需要将其转换为多客户数据库。想法是在数据库中的每个表中添加一个列(例如CompanyId),并在查询中仅考虑具有特定CompanyId的记录。
不幸的是,该项目已经相当成熟了,对于每个服务调用、每个Linq查询等都添加额外参数会非常麻烦。我知道应该从一开始就采用这种方式(多客户),但现在我付出了代价。
因此,我有两个选择:
1.单个数据库-问题在于如何告诉EF仅考虑CompanyId = X的记录,而不在每个单独的Linq查询中写Where(i => i.CompanyId == X)。
2.一个数据库=一个客户-为每个客户创建一个数据库似乎是非常好的解决方案,但在我们的项目中,用户可以访问多个数据库(客户可以与多家公司关联,并被要求选择他想要与哪家公司合作,并且可以自由更改)。问题在于我不知道如何在运行时更改连接字符串,也不知道这种解决方案是否可行。
请告诉我哪个选项更好,以及如何处理?
谢谢。
不幸的是,该项目已经相当成熟了,对于每个服务调用、每个Linq查询等都添加额外参数会非常麻烦。我知道应该从一开始就采用这种方式(多客户),但现在我付出了代价。
因此,我有两个选择:
1.单个数据库-问题在于如何告诉EF仅考虑CompanyId = X的记录,而不在每个单独的Linq查询中写Where(i => i.CompanyId == X)。
2.一个数据库=一个客户-为每个客户创建一个数据库似乎是非常好的解决方案,但在我们的项目中,用户可以访问多个数据库(客户可以与多家公司关联,并被要求选择他想要与哪家公司合作,并且可以自由更改)。问题在于我不知道如何在运行时更改连接字符串,也不知道这种解决方案是否可行。
请告诉我哪个选项更好,以及如何处理?
谢谢。