修复BOS实际表字段迁移并发布1.0.20

This commit is contained in:
chen qiang
2026-09-03 13:41:59 +08:00
parent 1be3c31ec1
commit 88af651eb4
7 changed files with 207 additions and 17 deletions
+8 -2
View File
@@ -91,7 +91,7 @@
单字段 SQL 写入目标库时,限定值组按名称、限定值按组和值判断,只补充缺失项;引用元数据按引用表名和字段 `DBNAME` 映射,目标引用字段不存在或不唯一时直接报错,不自动创建。
单字段读取还会查询源库 `USER_TABLES`、`USER_TAB_COLUMNS`。源对象是物理表且源字段存在时,输出文件首先检查目标库物理表和字段:目标表不存在时报错,目标字段不存在时按源字段的数据类型、长度、精度和字符语义执行 `ALTER TABLE ... ADD`。源对象是视图或 BOS 计算字段时不生成物理字段 DDL。
BOS 单字段读取先按 `AD_TABLE.NAME` 定位 BOS 表;`REALTABLE_ID` 非空时沿 `REALTABLE_ID -> AD_TABLE.ID` 解析最终实际表名称,支持多级映射,映射记录缺失、不唯一或循环引用时报错。BOS 配置仍按原 BOS 表名导出,物理字段按最终实际表名读取和写入。同名表或映射后的实际表必须命中 `USER_TABLES`,并排除 `USER_VIEWS`、`USER_MVIEWS`(物化视图也可能出现在 `USER_TABLES` 中)。源物理字段存在时,输出文件先检查目标同名普通物理表和字段:目标表不存在或为视图/物化视图时报错,目标字段不存在时按源字段类型、长度、精度和字符语义执行 `ALTER TABLE ... ADD`,已存在则跳过物理 DDL。源对象是视图、物化视图或源物理字段不存在时仅导出 BOS 配置。独立“表字段”页签不解析 BOS 映射。
写入流程:索引项 -> 读取对应 `data/*_{后缀}.txt` -> `DbServices.ExecuteCreate` -> 在目标库执行 -> 更新写入状态。批量写入遇到第一条失败即停止,并在内存中记录断点;断点不会跨进程持久化。
@@ -147,7 +147,13 @@ dotnet build .\henlo_migration_wpf10\henlo_migration_wpf10.csproj -c Debug
dotnet build .\henlo_migration_wpf10\henlo_migration_wpf10.csproj -c Debug --no-restore
```
当前没有测试项目。最低验证要求:
离线 BOS 实际表/字段回归(使用模拟元数据,不启动应用、不连接数据库):
```powershell
dotnet run --project .\tests\BosPhysicalColumnRegression\BosPhysicalColumnRegression.csproj
```
最低验证要求:
1. 所有 C#/XAML 修改至少执行一次主项目构建。
2. 仅文档修改可不构建,但要重新读取文件检查 Markdown、路径和命令。