docs: 迁移目录首次 add 自动创建,生成后手动添加 import 触发注册
This commit is contained in:
@@ -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<String>) {
|
||||
| `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`** 即生成增量迁移;
|
||||
|
||||
Reference in New Issue
Block a user