Asp.net mvc 基于ADO.NET的多租户隔离数据库结构
我正在使用MVC5创建多租户SaaS应用程序。基于MSDN文档,我创建了应用程序并成功完成了验证过程。但该示例附带EntityFramework。但是我需要从主数据库获取租户连接字符串,并根据主机url在应用程序中动态建立租户DBconnection(我有连接ADO项目的WEB API)。我不想转到EF,而纯粹使用ADO.NET实现它 我正在研究许多解决办法。但不令人满意(我需要保留所有调用的租户连接字符串。不确定会话是否是最佳选项 我的示例代码: 第1步: 成功登录后Asp.net mvc 基于ADO.NET的多租户隔离数据库结构,asp.net-mvc,ado.net,multi-tenant,saas,Asp.net Mvc,Ado.net,Multi Tenant,Saas,我正在使用MVC5创建多租户SaaS应用程序。基于MSDN文档,我创建了应用程序并成功完成了验证过程。但该示例附带EntityFramework。但是我需要从主数据库获取租户连接字符串,并根据主机url在应用程序中动态建立租户DBconnection(我有连接ADO项目的WEB API)。我不想转到EF,而纯粹使用ADO.NET实现它 我正在研究许多解决办法。但不令人满意(我需要保留所有调用的租户连接字符串。不确定会话是否是最佳选项 我的示例代码: 第1步: 成功登录后 public SqlC
public SqlConnection CreateTenantConnectionDatabase(string tenant)
{
string databaseServer = "";
string database = "";
string username = "";
string password = "";
using (SqlConnection conn = new SqlConnection(MasterDBConnectionString))
{
try
{
conn.Open();
using (SqlCommand command = conn.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "USP_GetTenantDBDetails";
第二步:
动态生成租户连接字符串,该字符串将在每个DB调用中使用
private static string GetTenantConnectionString(string databaseServer, string database, string username, string password)
{
//form the tenant connection string dynamically
}
步骤3
我的存储库类
public TenantDTO GetTenantDetails(string TenantName)
{
TenantDTO tenantDTO = new TenantDTO();
using (var dbConnection = applicationRepository.CreateTenantConnectionDatabase(TenantName))
{
try
{
dbConnection.Open();
using (SqlCommand command = dbConnection.CreateCommand())
{
您是否尝试过Microsoft Azure中的shard map,它也适用于非Azure db sharding我认为sharding适用于共享同一数据库的多个租户。在我的场景中,我有多个db(每个租户的db)。您是否可以发布一些示例代码参考此处提供的示例。这对于您的用例非常适用。