diff --git a/README.md b/README.md index a2ae522..af9d03d 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ main() { ```cangjie import simcu::orm.* import simcu::orm.macros.* -import myapp.migrations.* // 注册文件所在子包(仅 import 触发注册) +// import myapp.migrations.* // 生成首个迁移后手动取消注释(见下方「生成约定」) @DbContext public class MyDbContext { @@ -214,7 +214,8 @@ main(args: Array) { | `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`); - `add` 只生成不执行;执行迁移用 `update`(回退用 `downgrade`),或在应用启动时直接 `db.migrate()`; - 快照持久化在 `src/migrations/snapshot.json`;`add` 用「旧快照 vs 当前模型」做 diff,所以**改模型后重新编译应用再 `add`** 即生成增量迁移;