前面五篇我们讲了快速搭建、目录结构、CRUD、关联表、权限控制。今天说一个企业级系统的核心能力——多租户(SaaS)。
如果你做过面向企业的项目,一定遇到过这个问题:一套系统,要卖给不同的客户,每个客户的数据要隔离。
传统做法:每个客户部署一套,维护成本爆炸。
SaaS 做法:一套代码,多个客户共用,数据自动隔离。
EasyAdminBlazor 的多租户能力,只需要两步。
一、两步开启多租户
第一步:安装扩展
dotnetaddpackage 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,看到的全是自己公司的数据。
数据物理隔离,安全可靠。
五、准备工作
在添加租户之前,需要提前完成:
- 创建数据库:在数据库服务器中为每个租户创建独立的数据库
- 配置域名:将租户域名 DNS 解析到你的服务器
- 准备连接字符串:确保连接字符串中的数据库名称与实际创建的数据库一致
六、为什么选择数据库隔离?
EasyAdminBlazor 采用独立数据库的隔离模式,这是企业级 SaaS 的标准做法:
| 对比项 | 数据库隔离(本框架) | 共享表 |
|---|---|---|
| 数据安全 | ✅ 物理隔离,最安全 | ❌ 同一个表,容易误操作 |
| 数据备份 | ✅ 按租户独立备份 | ❌ 需要一起备份,恢复困难 |
| 性能 | ✅ 互不影响 | ❌ 大租户可能影响小租户 |
| 迁移 | ✅ 可单独迁移 | ❌ 迁移复杂 |
七、总结
| 你需要做的事 | 框架自动做的事 |
|---|---|
安装EasyAdminBlazor.MultiTenant | 自动创建租户管理界面 |
| 提前创建好租户数据库 | — |
| 在后台添加租户(名称、域名、连接字符串) | 自动在指定数据库中创建表结构 |
| DNS 配置域名解析 | 根据请求域名自动识别租户并切换数据库 |
一套代码,多个数据库,服务千家客户。
八、适用场景
| 场景 | 是否适合 |
|---|---|
| 为多个客户提供 SaaS 服务 | ✅ 完美适配 |
| 企业内部多子公司独立管理 | ✅ 完美适配 |
| 每个客户需要独立备份/恢复 | ✅ 天然支持 |
| 数据安全要求高的行业(金融/医疗) | ✅ 物理隔离 |
下一篇预告
《EasyAdminBlazor 第七篇:可视化代码生成器——点几下,一个完整模块到手》
🔗文档:https://easyadmim.wang-zhan.com.cn/doc
🔗源码:https://gitee.com/gudufy/EasyAdminBlazor
EasyAdminBlazor —— 两步开启多租户,一套代码服务万家客户