设计取舍
前七部分按代码讲机制,每一章都顺带碰到一些「这样做换来了什么、付出了什么」。这一部分只有一页,把它们收到一起:每一条先说收益,再说代价,代价都配着本卷某一页上跑出来的现象,链接指向那一页,这里不重讲机制。只有一条(宏生成代码的编译时间)在前面没有证据,这一页补了一个实验。
- 设计取舍:十二条取舍。运行期构造 SQL,编译期只对着实体检查;语句树和方言分开,方言专有的语法在别的后端上被静默丢掉或 panic;后端是运行时的 enum,
mock会改变它的形状;关系是RelationDef值,join 和 Loader 各有各的代价;ActiveValue三态让update只写改过的列,也让「忘了Set」不报错;每条语句单独借连接,没有会话;ConnectOptions是一层薄翻译;解码在几处把错误变成None;DbErr按调用位置包装;dense 实体的宏输出翻倍、编译时间约六倍;sea-orm-sync是 sed 的产物。
flowchart TB q[查询主线] --> t1["运行期构造 SQL"] q --> t2["语句树与方言"] q --> t9["宽松解码"] w[写入主线] --> t6["ActiveValue 三态"] d[定义主线] --> t4["关系是值"] d --> t11["宏生成代码"] t3["后端是运行时 enum"] --> q t3 --> w t7["每条语句借一次连接"] --> q t7 --> w srcdir["一份 src"] --> t12["sed 生成同步版"]
💬 关联讨论
发起讨论加载中...