Web API 查询架构定义和检测更改示例 (C#)

此示例演示如何使用 RetrieveMetadataChanges 操作来检索和检测表定义中的更改。

有关功能的说明,请参阅以下文章:

此示例使用 WebAPIService 类库 (C#) 中的常见帮助程序代码。

先决条件

生成并运行此示例需要满足以下先决条件:

  • Microsoft Visual Studio 2022。
  • 有权访问 Dataverse 并具有执行数据操作的权限。

如何运行此示例

  1. 克隆或下载 PowerApps-Samples 存储库。

  2. 找到 /dataverse/webapi/C#-NETx/RetrieveMetadataChanges/ 文件夹。

  3. 使用 Visual Studio 2022 打开 RetrieveMetadataChanges.sln 文件

  4. 编辑appsettings.json 文件以设置以下属性值:

    资产 说明书
    Url 您环境的 URL。 将占位符 https://yourorg.api.crm.dynamics.com 值替换为环境的值。 请参阅 “查看开发人员资源 ”以查找环境的 URL。
    UserPrincipalName 将占位符 you@yourorg.onmicrosoft.com 值替换为用于访问环境的 UPN 值。
    Password 将占位符 yourPassword 值替换为使用的密码。
  5. 保存文件appsettings.json

  6. F5 运行示例。

Code

此示例的代码如下: PowerApps-Samples/dataverse/webapi/C#-NETx/RetrieveMetadataChanges/Program.cs

演示

此示例演示如何检索特定列定义的架构定义,并保存它们(内存中)来表示缓存。

然后,它会创建一个新列,只检索该新列的数据,该列将添加到缓存中。

然后,它会删除该列,检索有关已删除项的数据,并使用它从缓存中删除已删除的列定义。

此示例包含六个部分:

定义查询

使用 EntityQueryExpression 定义查询,该查询返回联系人表中的所有 Picklist 选择列。

初始化缓存

  1. Query 参数设置为查询,并创建RetrieveMetadataChanges的实例。
  2. 发送请求并获取 RetrieveMetadataChangesResponse
  3. 缓存 RetrieveMetadataChangesResponse.EntityMetadata 值。
  4. 保存值 RetrieveMetadataChangesResponse.ServerVersionStamp ,以便在下一个请求中使用。
  5. 编写缓存中所有当前列的列表。

添加选择列

通过在联系人表中创建新的 PicklistAttributeMetadata 实例来创建新的选择列。

检测新增的列

  1. 使用原始查询作为Query参数来创建RetrieveMetadataChanges的新实例。
  2. RetrieveMetadataChangesRequest.ClientVersionStamp 设置为之前从第一个请求返回的值。
  3. 发送请求并获取 RetrieveMetadataChangesResponse
  4. 验证是否只返回一个新列定义来表示已创建的选项列。
  5. 保存值 RetrieveMetadataChangesResponse.ServerVersionStamp ,以便在下一个请求中使用。
  6. 将该选择列数据添加到缓存中。

删除选择列

删除之前创建的选择列。

检测已删除的列

  1. 创建一个新的 RetrieveMetadataChanges 实例,并将Query参数设置为原始查询。
  2. RetrieveMetadataChangesRequest.ClientVersionStamp 设置为此前从第二个请求返回的值。
  3. RetrieveMetadataChangesRequest.DeletedMetadataFilters设置为DeletedMetadataFilters.Attribute,因为我们正在寻找已删除的列定义。
  4. 发送请求并获取 RetrieveMetadataChangesResponse
  5. RetrieveMetadataChangesResponse.DeletedMetadata 中查找已删除选择列的 ID,使用 DeletedMetadataFilters.Attribute 作为集合的索引值。
  6. 从缓存中删除列定义。
  7. 编写缓存中所有当前列的列表。

清理

不需要清理,因为此示例创建的所有数据都已删除。

另请参阅

查询架构定义
缓存模式数据
使用 Dataverse Web API
WebAPIService 类库 (C#)
Web API 表架构作示例 (C#)