开始使用虚拟数据表(实体)

虚拟表(也称为 虚拟实体)支持将驻留在外部系统中的数据与 Microsoft Dataverse 集成。 此集成无缝表示外部数据作为 Dataverse 中的表,无需复制数据,通常不进行自定义编码。

虚拟表取代了以前的客户端和服务器端方法来集成外部数据,这需要自定义代码,并且存在许多限制。 这些限制包括集成不完善、数据重复或开发资源的广泛承诺。 此外,对于管理员和系统定制器,虚拟表的使用大大简化了管理和配置。

注释

本部分讨论虚拟表对开发人员的影响。 有关从用户界面管理虚拟表的详细信息,请参阅 创建和编辑包含外部数据源数据的虚拟表

虚拟表、数据提供程序和数据源

虚拟表包含 Dataverse 中的表定义,但不包含用于在 Dataverse 数据库中存储记录的关联物理表。 在运行时,当需要记录时,将从关联的外部系统动态检索其状态。 每个虚拟表类型不仅与 虚拟表数据提供程序 相关联,还可以(可选地)从关联的 虚拟表数据源获取某些配置信息。

以下数据提供程序随 Dataverse 一起提供:

  • 服务默认包含并安装了 OData v4 提供程序。 该提供程序支持创建、读取(获取、批量获取)、更新和删除 (CRUD) 操作。
  • AppSource 提供 Azure Cosmos DB(原 Microsoft Document DB)提供程序。

如果找不到外部数据源的数据提供程序,则可以开发 自定义虚拟表数据提供程序。 详细信息: 虚拟表数据提供程序

自定义虚拟表数据提供程序现在支持完整的 CRUD 操作。 开发人员可以为支持虚拟表的每个 CRUD 操作开发插件,并使用插件注册工具对它们进行注册。

虚拟表创建和映射

最初,定义虚拟表与定义自定义表相同。 为新的虚拟表类型指定表、列和关系。 然后,将虚拟表连接到数据提供程序以管理数据作。

自定义表类型及其列必须映射到外部数据源中的相应数据。 例如,虚拟表可能表示为外部关系数据库中的一行,并且其每个列可能对应于该行中的列。 这些外部数据名称通常不同于其相应的虚拟表名称。 实体 ID 字段存在特定且必需的映射关系——数据提供程序必须能提供此 GUID 并将其关联至代表该记录的外部记录。 实现此结果的最直接方法是实际使用 GUID 作为外部数据源中的主键。

在此示例中,还将提供相应的虚拟表数据源,以提供外部数据库的用户和连接信息。

虚拟表的限制

以下是应考虑的虚拟表的限制。

  • 仅支持组织拥有的表。 不支持对用户自有表应用的安全过滤。 可以根据其安全角色为单个用户打开或关闭对虚拟表数据的访问权限。 不支持字段级安全性。
  • 必须将外部数据建模为 Dataverse 表。 这意味着:
    • 外部数据源中的所有表都必须具有关联的 GUID 主键。
    • 所有表属性都必须表示为 Dataverse 表列。 可以使用表示文本、数字、选项、日期、图像和查找的简单类型。
    • 您必须能够在 Dataverse 中为任意表的关系建模。
    • 虚拟表中的列无法进行计算或汇总。  所有所需计算必须在外部完成,可能由数据提供程序内部执行或指导执行。
    • 尽管可以在网格或其他 UI 视图中添加虚拟表列作为查找,但不能基于此虚拟表查找列进行筛选或排序。
  • 审核功能不支持。
  • 虚拟表不支持搜索功能,因为它们不保存数据。
  • 虚拟表不支持图表和仪表板。
  • 无法为队列启用虚拟表。
  • 虚拟表不支持值的脱机缓存。
  • 虚拟表不能表示活动,不支持业务流程。
  • 创建后,无法将虚拟表更改为标准表(非虚拟表)。 同样地,标准表无法转换为虚拟表。
  • 由于所有属性均被返回,因此在 Retrieve 和 RetrieveMultiple 查询中选择属性不会生效
  • 减少和限制在网格视图中包含虚拟表查找列。 读取虚拟表查找列可能需要一段时间。

有关 Dataverse API 中如何反映这些限制的详细信息,请参阅 虚拟表的 API 注意事项

另请参阅

使用 OData v4 数据提供程序的虚拟表演练
虚拟表的 API 注意事项
自定义虚拟表数据提供程序
示例:通用虚拟表数据提供程序插件