BitzOrcas.Modern 使用基于 CSV 的种子框架填充平台系统表。种子数据作为 --init-schema / --seed-demo 命令的一部分运行——API 宿主创建所有表、审计分表,运行种子数据,然后退出不进入 web 管道。
种子填充如何工作
种子运行器
ISeedRunner 按顺序迭代已注册的 ISeedStep 实现。每个步骤从 CSV 资产文件读取并通过配置的 ORM 适配器(默认为 SqlSugar)upsert 记录。框架提供 CsvSeedReader 和 CsvSeedStepBase<T> 用于标准的 CSV 到实体映射。
种子数据 CSV 文件位于:
src/BuildingBlocks/BitzOrcas.Infrastructure.SqlSugar/Seeders/Assets/每个文件遵循命名规则 {序号}-{表名}.csv —— 数字前缀控制填充顺序。
Schema 初始化模式
| 参数 | 建表 | 审计分表 | 种子数据 |
|---|---|---|---|
--init-schema | 创建 | 创建 | 执行 |
--seed-demo | 创建 | 创建 | 执行(别名) |
--seed-only | 跳过 | 跳过 | 执行 |
--no-seed | 创建 | 创建 | 跳过 |
14 个平台种子表
以下是 --seed-demo 时从 CSV 资产填充的系统表:
| 序号 | 表 | 描述 |
|---|---|---|
| 100 | sys_platform_tenant | 平台租户(根租户和系统租户) |
| 110 | sys_language | 支持的语言(如 zh-CN、en-US) |
| 120 | sys_country | 国家和地区 |
| 130 | sys_industry_setting | 行业分类代码 |
| 140 | sys_general_code_group | 通用代码组(查找分类) |
| 141 | sys_general_code | 通用代码(查找值) |
| 142 | sys_general_code_text | 通用代码显示文本(i18n) |
| 150 | sys_exchange_rate | 货币汇率 |
| 160 | sys_public_holiday | 各地区法定节假日 |
| 200 | sys_role_type | 角色类型定义 |
| 210 | sys_role | 系统角色(Admin、Basic 等) |
| 220 | sys_module | 模块定义与权限 |
| 230 | sys_permission | 细粒度权限条目 |
| 240 | sys_role_module_permission | 角色-模块-权限映射 |
填充顺序很重要
表按数字前缀顺序填充。外键依赖被遵守——父表(如 sys_general_code_group)先于子表(如 sys_general_code)填充。
Sandbox 模块数据
除平台表外,Sandbox 模块(Notes、Greetings、Ping)提供了内置端点用于测试。这些默认不基于数据库——Notes 特性使用 ISandboxDataPort,在 API Shell 中解析为 NullSandboxDataPort(返回空结果)。配置了持久化适配器(SqlSugar 或 EF Core)后,Sandbox 端口会自动连接到真实实现。
Sandbox 端点
| 端点 | 方法 | 用途 |
|---|---|---|
/api/v1/ping | GET | 健康检查 / 存活探针 |
/api/v1/greetings | POST | 创建问候(演示命令模式) |
/api/v1/notes/{id} | GET | 按 ID 获取备忘录(演示查询模式) |
/api/v1/notes | POST | 创建备忘录(演示写穿透端口) |
添加自定义种子数据
添加自定义种子数据:
- 在
Seeders/Assets/目录创建 CSV 文件,使用适当的序号前缀。 - 创建一个
CsvSeedStepBase<T>子类,将 CSV 列映射到你的实体。 - 向
ISeedRunner注册该步骤——框架按顺序执行。
种子运行器是幂等的——每个步骤在写入前检查,因此对已填充的数据库重新运行是安全的。