docs: 迁移目录首次 add 自动创建,生成后手动添加 import 触发注册

This commit is contained in:
2026-08-19 09:23:07 +08:00
parent ab1bdce597
commit 132aae865b
+3 -2
View File
@@ -183,7 +183,7 @@ main() {
```cangjie ```cangjie
import simcu::orm.* import simcu::orm.*
import simcu::orm.macros.* import simcu::orm.macros.*
import myapp.migrations.* // 注册文件所在子包(仅 import 触发注册 // import myapp.migrations.* // 生成首个迁移后手动取消注释(见下方「生成约定」
@DbContext @DbContext
public class MyDbContext { public class MyDbContext {
@@ -214,7 +214,8 @@ main(args: Array<String>) {
| `cjpm run -- orm help` | 显示帮助 | | `cjpm run -- orm help` | 显示帮助 |
**生成约定** **生成约定**
- **新项目必须先`src/migrations/` 目录**并放一个占位文件(如 `_placeholder.cj`,内容仅 `package <应用包名>.migrations`),否则应用侧那行 `import <应用包名>.migrations.*`编译失败;首次 `add` 后迁移类与注册文件会加进该目录 - **首次使用(无迁移)**:不需要`src/migrations/` 目录,也不要写 `import <应用包名>.migrations.*`(该子包不存在会导致编译失败;首次 `add` 时 CLI 自动创建目录并生成迁移文件 + 注册文件
- **生成后手动加 import**:执行 `add` 生成首个迁移后,在 `main()` 所在文件手动加一行 `import <应用包名>.migrations.*`(如 `import myapp.migrations.*`)——注册文件在子包内惰性加载,只有 import 触发后 `update/downgrade/list` 才能看到迁移;之后新增迁移无需再动这行;
- 迁移 / 注册文件生成在 `src/migrations/`,该目录是**子包**,文件头 `package <应用包名>.migrations`(如应用包 `myapp``package myapp.migrations`); - 迁移 / 注册文件生成在 `src/migrations/`,该目录是**子包**,文件头 `package <应用包名>.migrations`(如应用包 `myapp``package myapp.migrations`);
- `add` 只生成不执行;执行迁移用 `update`(回退用 `downgrade`),或在应用启动时直接 `db.migrate()` - `add` 只生成不执行;执行迁移用 `update`(回退用 `downgrade`),或在应用启动时直接 `db.migrate()`
- 快照持久化在 `src/migrations/snapshot.json``add` 用「旧快照 vs 当前模型」做 diff,所以**改模型后重新编译应用再 `add`** 即生成增量迁移; - 快照持久化在 `src/migrations/snapshot.json``add` 用「旧快照 vs 当前模型」做 diff,所以**改模型后重新编译应用再 `add`** 即生成增量迁移;