在多租户应用程序中使用多个数据库架构

时间:2014-01-06 11:22:46

标签: asp.net-mvc architecture dapper multi-tenant

我正在将当前的应用程序迁移到多租户架构。使用单一代码库,我需要解决多个租户问题。我使用单一数据库,多种模式方法。将为每个租户分配一个单独的模式,其中元数据保存在默认模式中。

应用程序是使用ASP.NET MVC构建的。我使用Dapper连接到我的SQL Server。我有50多个函数使用直接查询和存储过程调用数据库。是否有任何方法可以在为每个租户初始化dapper时设置架构而不改变功能。

2 个答案:

答案 0 :(得分:4)

在SQL Server中,架构与用户关联。每个用户至少有一个默认架构。您可以将租户与架构相关联,这意味着您将具有

的映射

租户 - >架构 - >用户

动态构造SQL连接字符串并传递与该租户对应的SQL用户。这样就可以自动指出默认模式,您不必更改Dapper查询,也不必编写动态查询。

注意:不要忘记检查连接池含义。

答案 1 :(得分:1)

我会尝试一种简单的方法。

使用Dapper,为了便于维护,我将查询存储在外部XML文件中。因此,您可以为每个客户提供外部XML文件。 另一种解决方案,但我之前没有尝试过,我认为您可以在查询中添加一个参数,即模式名称。因此,在每个查询中,您始终需要指定架构。

相关问题