关于 aurelius-mapping
aurelius-mapping 是面向 Delphi 开发者的 TMS Aurelius ORM 映射指南,介绍如何用属性将类映射到关系数据库。它涵盖自动映射、显式映射及关联对象的生命周期规则。
主要功能
- 01新架构采用自动映射
- 02旧架构使用显式属性
- 03按需覆盖映射默认值
- 04管理关联对象与集合生命周期
- 05注册实体以防链接器移除
适用场景
- 01为新数据库架构映射 Delphi 类
- 02匹配既有表和列的名称
- 03设置延迟加载关联与集合
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tmssoftware/ skills --skill aurelius-mapping安装后在 Claude Code 中输入/aurelius-mapping确认已加载。
附带文件references/mapping.md
详细介绍
Aurelius 映射
使用 TMS Aurelius 属性将 Delphi 类映射到关系型数据库。所有属性均在单元 Aurelius.Mapping.Attributes 中声明。
所有属性语法、选项表和代码示例,请参阅 references/mapping.md。以下指南涵盖参考文档未重点说明的决策和规则。
方法
新建架构(没有现有表): 默认使用 [Automapping]。它根据字段命名约定推断表名、列名、可空性和标识符,简单场景无需额外属性。
旧版或固定架构: 使用显式属性([Table]、[Column]、[Id] 等),与现有列名和表名精确匹配。
混合方式: 自动映射并非非此即彼——只在需要覆盖默认值的地方添加显式属性。
用户未指定时,请询问或根据上下文推断(已有表定义 → 显式映射;全新项目 → 自动映射)。
关键规则
以下是最常见的错误。务必遵守。
对象生命周期——关联
- 绝不在父对象的构造函数或析构函数中创建或释放多对一关联对象。Aurelius 管理关联实体对象的生命周期。
- 及时加载的关联使用普通
T字段类型;延迟加载的关联使用Proxy<T>字段类型。 - 通过返回
FArtist.Value的属性公开延迟加载的关联。
对象生命周期——集合
- 请在父对象的构造函数和析构函数中创建和释放
TList<T>容器。 - 绝不在列表中创建或释放子实体对象——Aurelius 会管理它们。
- 不要使用
OwnsObjects = True的TObjectList<T>。 - 延迟加载的集合使用
Proxy<TList<T>>作为字段类型。在构造函数和析构函数中使用SetInitialValue/DestroyValue,不要访问.Value。
注册实体
始终在单元的 initialization 部分添加 RegisterEntity 调用:
initialization
RegisterEntity(TCustomer);
RegisterEntity(TCountry);
这样可避免 Delphi 链接器移除该类。在服务器应用程序(XData 服务)中尤其重要,因为代码中可能不会直接引用实体类。
参考
所有属性签名、选项和完整代码示例,请参阅 references/mapping.md。
参考文档涵盖:基本实体映射、自动映射规则和覆盖项、抽象实体、可空字段、Blob 字段、多对一关联(及时加载和延迟加载)、一对多关联(双向和单向、及时加载和延迟加载)、集合排序和筛选、外键命名、单表继承和联表继承、复合标识符。