创建和编辑包含来自外部数据源的数据的虚拟表

虚拟表是 Microsoft Dataverse 中的自定义表,其中具有包含来自外部数据源的数据的列。 虚拟表在您的应用中作为常规表行显示给用户,但包含源自外部数据库(如 Azure SQL 数据库)的数据。 所有客户端(包括使用 Dataverse Web 服务开发的自定义客户端)中均提供基于虚拟表的行。

以前,要集成分散的数据源,需要创建连接器来移动数据,或开发自定义插件(客户端或服务器端)。 但是,通过虚拟表可以在运行时直接连接外部数据源,这样无需复制数据即可在环境中使用外部数据源。

虚拟表包含三个主要组成部分:数据提供程序数据源行和虚拟表。 数据提供程序由插件和数据源表组成。 数据源是 Dataverse 中的表行,其中包含表示连接参数的架构的元数据。 每个虚拟表都引用表定义中的一个数据源。

Dataverse 中包含 OData 数据提供程序,可用于连接 OData v4 Web 服务来访问外部数据。

开发人员也可以构建自己的数据提供程序。 数据提供程序作为解决方案安装在环境中。 详细信息:开发人员文档:虚拟表入门

虚拟表的优点

  • 开发人员可使用 Dataverse Web 服务和插件注册工具实现插件,以读取、更新或删除外部数据。
  • 系统定制员可使用 Power Apps 解决方案资源管理器配置数据源行和创建虚拟表,用于在不编写任何代码的情况下访问外部数据。
  • 最终用户使用虚拟表创建的行来查看列、网格、搜索结果以及基于 Fetch XML 的报表和仪表板中的数据。

添加用于虚拟表的数据源

开发人员可以创建自定义插件来用作虚拟表的数据提供程序。 您也可以使用提供的 OData v4 数据提供程序。 详细信息:OData v4 数据提供程序配置,要求和最佳实践

  1. 登录 Power Apps,然后选择设置 > 高级设置

  2. 转至**设置** > 管理 > 虚拟实体数据源

  3. 在“操作”工具栏上,选择新建

  4. 选择数据提供程序对话框中,从以下数据源中进行选择,然后选择确定

    数据提供程序 说明
    自定义数据提供程序 如果已导入数据提供程序插件,将在此处显示该数据提供程序。 详细信息请参阅开发人员文档:虚拟表入门
    OData v4 数据提供程序 Dataverse 中包含可与 OData v4 Web 服务配合使用的 OData 数据提供程序。 详细信息 OData v4 数据提供程序配置,要求和最佳实践

向数据源添加安全列

按照与其他任何表相同的方式为数据源创建列。 对于加密数据或敏感数据,请对数据源的自定义列启用“数据源密码”属性。 例如,若要保护包含数据库连接字符串的列。

备注

只有添加到“数据源”窗体的列才有“数据源密码”属性。

数据源密钥属性。

创建虚拟表

除了此处介绍的一些额外的属性,虚拟表的创建方法和 Dataverse 中的其他任何表很像。 虚拟表必须使用解决方案资源管理器创建。

备注

尽管可以通过选择作为数据源来创建虚拟表,但是为了获取数据,虚拟表需要数据源。 详细信息请参阅添加用于虚拟表的数据源

打开解决方案资源管理器

您创建的任何虚拟表的名称中都包含自定义前缀。 这是根据您在其中工作的解决方案的解决方案发布商设置的。 如果您关心自定义前缀,请确保在非托管解决方案中工作,其中的自定义前缀是您需要的此虚拟表的前缀。 详细信息:更改解决方案发布商前缀

打开非托管解决方案

  1. Power Apps 左侧导航窗格中选择解决方案,然后在工具栏上选择切换到经典。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。

  2. 所有解决方案列表中,打开要使用的非托管解决方案。

创建虚拟表

  1. 在解决方案资源管理器中,创建一个新表。 方法是,选择左导航窗格中的实体,然后选择新建

  2. 实体定义常规选项卡上,选择虚拟实体,然后在数据源下拉列表中,选择所需数据源。

    表定义中的虚拟表选项。

  3. 在“实体定义”中,填写以下必填列。

    字段 描述
    外部名称 在此表映射到的外部数据源中输入表的名称。
    外部集合名称 在此表映射到的外部数据源中输入表的复数名称。

    下面是名称为 Movie 的虚拟表的示例,该实体使用 Azure Cosmos DB 数据提供程序访问文档文件。

    使用 Azure Cosmos DB 数据提供程序的虚拟表定义。

    重要

    虚拟表支持多个选项,如“访问团队”、“队列”和“快速创建”。 详细信息请参阅使用虚拟表时的注意事项

    请根据需要完成更多必需属性和可选属性。 有关这些属性的详细信息,请参阅创建和编辑表

  4. 为虚拟表创建和添加一个或多个列。 除了创建自定义列所需的标准列属性,还可以为您为虚拟表创建的各自定义列使用以下可选属性。

    字段 描述
    外部名称 这通常是用于标识要在列中显示的数据的唯一名称。
    外部类型名称 如果您创建的列类型是 OptionSet:此属性映射到选择项的外部服务中的值集的外部名称。 通常可以是字符串值类的枚举或名称。 如果需要完全限定的名称,则可使用外部类型名称。 例如,因为在查询中的参数需要完全限定的名称的 OData 中的类型名称,如 [类型名称].[]。
    外部值 如果您创建的列类型是 OptionSet:此属性映射到选择项项目的外部数据源中的对应值。 输入的该值用于确定应用中显示哪个选择项。

    根据需要完成更多属性。 有关这些属性的详细信息,请参阅创建和编辑列

  5. 选择属性页中的保存并关闭

  6. 在解决方案资源管理器工具栏中,选择保存

  7. 在解决方案资源管理器工具栏中,选择发布

  8. 关闭解决方案资源管理器。

使用虚拟表时的注意事项

虚拟表有以下限制。

  • 不能将现有表转换为虚拟表。
  • 默认情况下,虚拟表只包含“名称”和“ID”列。 其他系统管理列(如“状态”或“创建日期/修改日期”)不受支持。
  • 虚拟表不支持数据类型为“货币”、“图像”或“客户”的自定义列。
  • 虚拟表不支持审核。
  • 不能在汇总列或计算列中使用虚拟表列。
  • 虚拟表不能为表的活动类型。
  • 虚拟表不支持仪表板和图表。
  • 不能为虚拟表启用许多会影响表的表行的功能。 示例包括队列、知识管理、SLA、重复检测、更改跟踪、Mobile offline 功能、列安全性、Dataverse 搜索和 Power Pages 解决方案。
  • 虚拟表归组织所有,不支持行级别的 Dataverse 安全概念。 建议为外部数据源实施您自己的安全模型。
  • 更新时验证的列元数据属性不应用于虚拟表。 例如,可将虚拟表列中的整数列设置为最小值为零。 但是,因为该值来自外部数据源,所以从虚拟表检索时,查询将返回小于零的值。 查询中不表示最小值属性。 您仍需将该值筛选为大于 0(如果需要这样)。
  • 虚拟表不支持更改跟踪,因此不能使用 Dataverse 功能(如数据导出服务或 Azure Synapse Link for Dataverse)同步。
  • 使用附带的 OData v4 数据提供程序的虚拟表在出站端口 443 上启用。
  • 虚拟表不支持业务流程。 详细信息:当用户激活业务流程时收到意外错误

当用户激活业务流程时收到意外错误

当用户尝试激活业务流程时,他们可能会收到“意外错误”消息。 查看日志文件时会显示以下日志条目。

ErrorCode:0x80040216 消息:System.Web.HttpUnhandledException:引发了“System.Web.HttpUnhandledException”类型的异常。 ---> Microsoft.Crm.CrmException:无法为虚拟实体启用业务流程

出现此问题的原因是虚拟表不支持业务流程。

另请参见

OData v4 数据提供程序要求和最佳实践
创建和编辑表
在 Power Pages 中配置虚拟表

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。