用途
add-dataverse 用于向 Power Apps 代码应用添加 Dataverse 表,并生成对应的 TypeScript 模型和服务代码。它同时支持连接已有表,以及创建新的 Dataverse 表。
主要能力
- 为已有 Dataverse 表生成 TypeScript 模型(
src/generated/models/{Table}Model.ts)和服务(src/generated/services/{Table}Service.ts)。 - 若表中包含文件/图像列,模型会额外生成
{Table}FileColumnName、{Table}ImageColumnName、{Table}UploadColumnName联合类型;服务会额外生成upload、downloadFile、downloadImage、deleteFileOrImage方法。 - 服务提供 CRUD 方法:
create、get、getAll、update、delete。 - 支持创建新的 Dataverse 表,包括设计 schema、构建依赖图、按依赖顺序创建表。
- 提供多个参考文档:
dataverse-reference.md(Picklist 字段、虚拟字段、查找、文件/图像列、表单模式)、api-authentication-reference.md(Dataverse API 认证、令牌、发布者前缀)、table-management-reference.md(查询、创建、扩展表和列)、data-architecture-reference.md(关系类型、依赖层级)。
使用方式
工作流分为两条路径:已有表(跳到第 5 步)或新表(完整流程)。
- 规划:检查 memory bank 中的项目上下文,询问用户需要哪些 Dataverse 表、表是否已存在。若创建新表,需设计 schema、构建依赖图,进入 plan mode 展示 ER 模型并获得批准。
- 设置 API 认证(仅创建表时):验证 Azure CLI 登录,获取 Dataverse 环境 URL(格式如
https://<org-name>.crm.dynamics.com),初始化 API。需要 System Administrator 或 System Customizer 安全角色。 - 审查现有表(仅创建表时):查询现有自定义表,向用户展示可复用、需扩展或需新建的表。
- 创建表(仅创建表时):获得明确确认后,按依赖顺序创建(Tier 0 参考表、Tier 1 主实体、Tier 2 依赖表),使用安全函数如
New-DataverseTableIfNotExists、Add-DataverseColumnIfNotExists、Add-DataverseLookupIfNotExists。 - 添加数据源:对每个表运行
pa app add data-source --connector dataverse --table <table-logical-name>。 - 审查生成文件:查看生成的模型和服务文件,向用户展示使用示例。关键规则:使用生成的服务(如
AccountsService.getAll()),而非 fetch/axios;检查result.data获取实际数据;不要编辑生成文件,除非必要;编写任何 Dataverse 代码前先阅读dataverse-reference.md。 - 构建:运行
npm run build,修复 TypeScript 错误,暂不部署。
最后更新 memory bank,记录添加或创建的表、生成的文件及 schema 备注。
适用场景
- 需要将 Power Apps 代码应用连接到 Dataverse 数据源。
- 需要在 Dataverse 中创建新表并生成对应的 TypeScript 代码。
- 需要为已有 Dataverse 表快速生成 CRUD 服务代码。
限制
- 创建表需要 System Administrator 或 System Customizer 安全角色。
- 创建表前需要 Azure CLI 登录并获取 Dataverse 环境 URL。
- 构建后暂不部署,需手动处理部署。
- 具体收费、价格、平台支持范围等细节暂未提供。