DbContext中只改写let 字段
This commit is contained in:
@@ -42,7 +42,7 @@ public class User {
|
||||
|
||||
### 2. 定义 DbContext 并增删改查
|
||||
|
||||
用 `@DbContext` 宏(推荐):纯声明类即可,宏自动补 `<: DbContext`、把每个 `DbSet<T>` 声明变成 `public prop` 并注入 `this.set<T>()`、生成 `(driverName, connStr)` 构造与 `migrations()` override:
|
||||
用 `@DbContext` 宏(推荐):纯声明类即可,宏自动补 `<: DbContext`、把每个 **`let` 前缀**的 `DbSet<T>` 字段改写成 `public prop` 并注入 `this.set<T>()`(`var` / `prop` 前缀一律不改动,交给用户自行管理)、生成 `(driverName, connStr)` 构造与 `migrations()` override:
|
||||
|
||||
```cangjie
|
||||
import std.database.sql.*
|
||||
@@ -52,8 +52,8 @@ import simcu::orm.macros.*
|
||||
|
||||
@DbContext
|
||||
public class AppDbContext {
|
||||
prop users: DbSet<User>
|
||||
prop orders: DbSet<Order>
|
||||
let users: DbSet<User>
|
||||
let orders: DbSet<Order>
|
||||
}
|
||||
|
||||
main() {
|
||||
@@ -190,8 +190,8 @@ import simcu::orm.macros.*
|
||||
|
||||
@DbContext
|
||||
public class MyDbContext {
|
||||
prop users: DbSet<User>
|
||||
prop orders: DbSet<Order>
|
||||
let users: DbSet<User>
|
||||
let orders: DbSet<Order>
|
||||
}
|
||||
|
||||
main(args: Array<String>) {
|
||||
@@ -324,7 +324,7 @@ orm-cj/
|
||||
|
||||
### 3. DbContext / DbSet
|
||||
|
||||
**推荐:`@DbContext` 宏**。把 `DbSet` 声明为 `prop`,宏自动补继承/构造/注入/`migrations()`:
|
||||
**推荐:`@DbContext` 宏**。把 `DbSet` 声明为 **`let` 前缀**(`let xxx: DbSet<T>`),宏只处理这种形式:改写成 `public prop xxx: DbSet<T> { get() { this.set<T>() } }`(public getter 保证反射可枚举);`var` / `prop` 前缀一律不改动。同时自动补继承/构造/`migrations()`:
|
||||
|
||||
```cangjie
|
||||
import simcu::orm.*
|
||||
@@ -334,8 +334,8 @@ import std.collection.* // migrations() 签名需要 ArrayList
|
||||
|
||||
@DbContext
|
||||
public class AppDbContext {
|
||||
prop users: DbSet<User>
|
||||
prop orders: DbSet<Order>
|
||||
let users: DbSet<User>
|
||||
let orders: DbSet<Order>
|
||||
}
|
||||
|
||||
// 用法(宏生成 (driverName, connStr) 构造)
|
||||
@@ -354,8 +354,12 @@ if (!db.databaseExists() || db.hasPendingMigrations()) { db.migrate() }
|
||||
|
||||
```cangjie
|
||||
public class AppDbContext <: DbContext {
|
||||
public let users: DbSet<User>
|
||||
public let orders: DbSet<Order>
|
||||
public prop users: DbSet<User> {
|
||||
get() { this.set<User>() }
|
||||
}
|
||||
public prop orders: DbSet<Order> {
|
||||
get() { this.set<Order>() }
|
||||
}
|
||||
|
||||
public init(driverName: String, connStr: String) { super(driverName, connStr) }
|
||||
public init(datasource: Datasource) { super(datasource) }
|
||||
|
||||
Reference in New Issue
Block a user