From 132aae865b712ac77d91fb4d5552e46ef82d0a60 Mon Sep 17 00:00:00 2001 From: xRain Date: Wed, 19 Aug 2026 09:23:07 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=BF=81=E7=A7=BB=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E9=A6=96=E6=AC=A1=20add=20=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?,=E7=94=9F=E6=88=90=E5=90=8E=E6=89=8B=E5=8A=A8=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20import=20=E8=A7=A6=E5=8F=91=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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`** 即生成增量迁移;