mcpField
A
aurelius-mapping

aurelius-mapping

github.com/tmssoftware开发1439 次安装28 周前更新
代码仓库

关于 aurelius-mapping

aurelius-mapping 是面向 Delphi 开发者的 TMS Aurelius ORM 映射指南,介绍如何用属性将类映射到关系数据库。它涵盖自动映射、显式映射及关联对象的生命周期规则。

主要功能

  1. 01新架构采用自动映射
  2. 02旧架构使用显式属性
  3. 03按需覆盖映射默认值
  4. 04管理关联对象与集合生命周期
  5. 05注册实体以防链接器移除

适用场景

  1. 01为新数据库架构映射 Delphi 类
  2. 02匹配既有表和列的名称
  3. 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 字段、多对一关联(及时加载和延迟加载)、一对多关联(双向和单向、及时加载和延迟加载)、集合排序和筛选、外键命名、单表继承和联表继承、复合标识符。

评论

支持 Markdown