EasyAdminBlazor 第六篇:多租户 SaaS 实战——一套代码,服务千家客户

前面五篇我们讲了快速搭建、目录结构、CRUD、关联表、权限控制。今天说一个企业级系统的核心能力——多租户(SaaS)

如果你做过面向企业的项目,一定遇到过这个问题:一套系统,要卖给不同的客户,每个客户的数据要隔离。

传统做法:每个客户部署一套,维护成本爆炸。

SaaS 做法:一套代码,多个客户共用,数据自动隔离。

EasyAdminBlazor 的多租户能力,只需要两步


一、两步开启多租户

第一步:安装扩展

dotnet add package EasyAdminBlazor.MultiTenant

第二步:在 Program.cs 中启用

builder.AddEasyAdminBlazor(/* ... */)
    .AddEasyAdminBlazorMultiTenant();

完成。 后台会自动出现「租户管理」菜单。


二、添加租户

进入「租户管理」→「添加租户」,填写:

字段 说明 示例
租户名称 公司/客户名称 A公司
租户编码 唯一标识 company_a
绑定域名 该租户的访问域名 a.yourdomain.com
数据库连接 该租户的数据库连接字符串(数据库需提前创建) Server=...;Database=Tenant_A;...

保存后,框架会自动在该数据库中创建所有表结构。


三、通过域名自动识别租户

用户访问 a.yourdomain.com → 框架根据域名自动切换到对应的租户数据库。

不需要写任何代码。

访问地址 自动识别的租户 使用的数据库
a.yourdomain.com A公司 Tenant_A 数据库
b.yourdomain.com B公司 Tenant_B 数据库
yourdomain.com 默认/管理端 主数据库

DNS 配置:将所有域名都解析到同一台服务器即可。


四、租户隔离效果

同一套程序,不同的域名,自动切换到不同的数据库,数据物理隔离:

场景 租户A(A公司) 租户B(B公司)
访问地址 a.yourdomain.com b.yourdomain.com
使用的数据库 Tenant_A Tenant_B
看到的数据 A公司的客户、订单 B公司的客户、订单

租户A的管理员登录 a.yourdomain.com,看到的全是自己公司的数据。
租户B的管理员登录 b.yourdomain.com,看到的全是自己公司的数据。

数据物理隔离,安全可靠。


五、准备工作

在添加租户之前,需要提前完成:

  1. 创建数据库:在数据库服务器中为每个租户创建独立的数据库
  2. 配置域名:将租户域名 DNS 解析到你的服务器
  3. 准备连接字符串:确保连接字符串中的数据库名称与实际创建的数据库一致

六、为什么选择数据库隔离?

EasyAdminBlazor 采用独立数据库的隔离模式,这是企业级 SaaS 的标准做法:

对比项 数据库隔离(本框架) 共享表
数据安全 ✅ 物理隔离,最安全 ❌ 同一个表,容易误操作
数据备份 ✅ 按租户独立备份 ❌ 需要一起备份,恢复困难
性能 ✅ 互不影响 ❌ 大租户可能影响小租户
迁移 ✅ 可单独迁移 ❌ 迁移复杂

七、总结

你需要做的事 框架自动做的事
安装 EasyAdminBlazor.MultiTenant 自动创建租户管理界面
提前创建好租户数据库
在后台添加租户(名称、域名、连接字符串) 自动在指定数据库中创建表结构
DNS 配置域名解析 根据请求域名自动识别租户并切换数据库

一套代码,多个数据库,服务千家客户。


八、适用场景

场景 是否适合
为多个客户提供 SaaS 服务 ✅ 完美适配
企业内部多子公司独立管理 ✅ 完美适配
每个客户需要独立备份/恢复 ✅ 天然支持
数据安全要求高的行业(金融/医疗) ✅ 物理隔离

下一篇预告

《EasyAdminBlazor 第七篇:可视化代码生成器——点几下,一个完整模块到手》


🔗 文档https://easyadmim.wang-zhan.com.cn/doc
🔗 源码https://gitee.com/gudufy/EasyAdminBlazor

EasyAdminBlazor —— 两步开启多租户,一套代码服务万家客户

posted @ 2026-06-12 08:53  gudufy  阅读(26)  评论(0)    收藏  举报