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的实例。
  2. 发送请求并获取 RetrieveMetadataChangesResponse。
  3. 缓存 RetrieveMetadataChangesResponse.EntityMetadata 值。
  4. 保存值 RetrieveMetadataChangesResponse.ServerVersionStamp ,以便在下一个请求中使用。
  5. 编写缓存中所有当前列的列表。

添加选择列

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

检测新增的列

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

删除选择列

删除之前创建的选择列。

检测已删除的列

  1. 使用原始查询作为参数来创建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#)