此示例演示如何使用 RetrieveMetadataChanges 操作来检索和检测表定义中的更改。
有关功能的说明,请参阅以下文章:
此示例使用 WebAPIService 类库 (C#) 中的常见帮助程序代码。
先决条件
生成并运行此示例需要满足以下先决条件:
- Microsoft Visual Studio 2022。
- 有权访问 Dataverse 并具有执行数据操作的权限。
如何运行此示例
克隆或下载 PowerApps-Samples 存储库。
使用 Visual Studio 2022 打开
RetrieveMetadataChanges.sln文件编辑
appsettings.json文件以设置以下属性值:资产 说明书 Url您环境的 URL。 将占位符 https://yourorg.api.crm.dynamics.com值替换为环境的值。 请参阅 “查看开发人员资源 ”以查找环境的 URL。UserPrincipalName将占位符 you@yourorg.onmicrosoft.com值替换为用于访问环境的 UPN 值。Password将占位符 yourPassword值替换为使用的密码。保存文件
appsettings.json按 F5 运行示例。
Code
此示例的代码如下: PowerApps-Samples/dataverse/webapi/C#-NETx/RetrieveMetadataChanges/Program.cs
演示
此示例演示如何检索特定列定义的架构定义,并保存它们(内存中)来表示缓存。
然后,它会创建一个新列,只检索该新列的数据,该列将添加到缓存中。
然后,它会删除该列,检索有关已删除项的数据,并使用它从缓存中删除已删除的列定义。
此示例包含六个部分:
定义查询
使用 EntityQueryExpression 定义查询,该查询返回联系人表中的所有 Picklist 选择列。
初始化缓存
- 将
Query参数设置为查询,并创建RetrieveMetadataChanges的实例。 - 发送请求并获取 RetrieveMetadataChangesResponse。
- 缓存
RetrieveMetadataChangesResponse.EntityMetadata值。 - 保存值
RetrieveMetadataChangesResponse.ServerVersionStamp,以便在下一个请求中使用。 - 编写缓存中所有当前列的列表。
添加选择列
通过在联系人表中创建新的 PicklistAttributeMetadata 实例来创建新的选择列。
检测新增的列
- 使用原始查询作为
Query参数来创建RetrieveMetadataChanges的新实例。 - 将
RetrieveMetadataChangesRequest.ClientVersionStamp设置为之前从第一个请求返回的值。 - 发送请求并获取 RetrieveMetadataChangesResponse。
- 验证是否只返回一个新列定义来表示已创建的选项列。
- 保存值
RetrieveMetadataChangesResponse.ServerVersionStamp,以便在下一个请求中使用。 - 将该选择列数据添加到缓存中。
删除选择列
删除之前创建的选择列。
检测已删除的列
- 创建一个新的 RetrieveMetadataChanges 实例,并将
Query参数设置为原始查询。 - 将
RetrieveMetadataChangesRequest.ClientVersionStamp设置为此前从第二个请求返回的值。 - 将
RetrieveMetadataChangesRequest.DeletedMetadataFilters设置为DeletedMetadataFilters.Attribute,因为我们正在寻找已删除的列定义。 - 发送请求并获取 RetrieveMetadataChangesResponse。
- 在
RetrieveMetadataChangesResponse.DeletedMetadata中查找已删除选择列的 ID,使用DeletedMetadataFilters.Attribute作为集合的索引值。 - 从缓存中删除列定义。
- 编写缓存中所有当前列的列表。
清理
不需要清理,因为此示例创建的所有数据都已删除。
另请参阅
查询架构定义
缓存模式数据
使用 Dataverse Web API
WebAPIService 类库 (C#)
Web API 表架构作示例 (C#)