虚拟表是 Microsoft Dataverse 中的自定义表,其中包含来自外部数据源的数据的列。 虚拟表以常规表行的形式显示在应用中,但包含从外部数据库(例如 Azure SQL 数据库)获取的数据。 基于虚拟表的行可用于所有客户端,包括使用 Dataverse Web 服务开发的自定义客户端。
以前,要集成分散的数据源,需要创建连接器来移动数据,或开发自定义插件(客户端或服务器端)。 但是,使用虚拟表,可以在运行时直接与外部数据源连接,以便外部数据源中的特定数据在环境中可用,而无需数据复制。
虚拟表由三个主要组件组成: 数据提供程序、 数据源 行和 虚拟表。 数据提供程序由插件和数据源表组成。 数据源是 Dataverse 中的表行,其中包括表示连接参数架构的元数据。 每个虚拟表引用表定义中的数据源。
Dataverse 包括一个 OData 数据提供程序,可用于连接到访问外部数据的 OData v4 Web 服务。
开发人员也可以构建自己的数据提供程序。 数据提供程序作为解决方案安装在环境中。 详细信息: 开发人员文档:虚拟表入门
虚拟表优势
- 开发人员可以使用 Dataverse Web 服务和插件注册工具实现插件来读取、更新或删除外部数据。
- 系统定制器使用 Power Apps 解决方案资源管理器来配置数据源行,并创建用于访问外部数据的虚拟表,而无需编写任何代码。
- 最终用户使用虚拟表创建的行来查看列、网格、搜索结果以及基于 Fetch XML 的报表和仪表板中的数据。
添加要用于虚拟表的数据源
开发人员创建一个自定义插件,用作虚拟表的数据提供程序。 您也可以使用提供的 OData v4 数据提供程序。 详细信息:OData v4 数据提供程序配置,要求和最佳实践
登录到 Power Apps,然后选择 “设置>高级设置”。
转到 “设置>管理>”虚拟实体数据源。
在“操作”工具栏上,选择新建。
在 “选择数据提供程序 ”对话框中,从以下数据源中进行选择,然后选择“ 确定”。
数据提供程序 Description 自定义数据提供程序 如果已导入数据提供程序插件,将在此处显示该数据提供程序。 详细信息 开发人员文档:虚拟表入门 OData v4 数据提供程序 Dataverse 包括可与 OData v4 Web 服务一起使用的 OData 数据提供程序。 详细信息 OData v4 数据提供程序配置、要求和最佳做法
将受保护的列添加到数据源
以与任何其他表相同的方式为数据源创建列。 对于加密或敏感的数据,请对数据源的自定义列启用“数据源机密”属性。 例如,若要保护包含数据库连接字符串的列。
注释
只有添加到“数据源”窗体的列才有“数据源密码”属性。
创建虚拟表
可以像 Dataverse 中的任何其他表一样创建虚拟表,并添加此处所述的一些额外属性。 必须使用解决方案资源管理器创建虚拟表。
注释
虽然可以通过选择 “无” 作为数据源来创建虚拟表,但要获取虚拟表需要数据源的数据。 详细信息 添加用于虚拟表的数据源
打开解决方案资源管理器
你创建的任何虚拟表的名称的一部分是自定义前缀。 这是根据您在其中工作的解决方案的解决方案发布商设置的。 如果您关心自定义前缀,请确保在非托管解决方案中工作,其中的自定义前缀是您需要的此虚拟表的前缀。 详细信息:更改解决方案发布商前缀
打开非托管解决方案
在 Power Apps 中,从左侧导航窗格中选择 “解决方案 ”,然后在工具栏上,选择“ 切换到经典”。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
在 “所有解决方案 ”列表中,打开所需的非托管解决方案。
创建虚拟表
在解决方案资源管理器中,创建新数据表。 方法是,选择左导航窗格中的实体,然后选择新建。
在实体定义的常规选项卡上,选择虚拟实体,然后在数据源下拉列表中,选择所需数据源。
在实体定义中,完成以下必要的列。
字段 Description 外部名称 输入此表映射到的外部数据源中的表的名称。 外部集合名称 在此表映射到的外部数据源中输入表的复数名称。 下面是名为 Movie 的虚拟表的示例,该表使用 Azure Cosmos DB 数据提供程序访问文档文件。
重要
虚拟表不支持访问团队、队列和快速创建等若干选项。 更多信息 使用虚拟表时的注意事项
请根据需要完成更多必需属性和可选属性。 有关这些属性的详细信息,请参阅 “创建和编辑表”。
为虚拟表创建并添加一个或多个列。 除了创建自定义列所需的标准列属性外,这些可选属性还可用于为虚拟表创建的每个自定义列。
字段 Description 外部名称 这通常是用于标识要在列中显示的数据的唯一名称。 外部类型名称 如果创建的列类型为 OptionSet:此属性映射到所选外部服务中值集的外部名称。 通常可以是字符串值类的枚举或名称。 如果需要完全限定的名称,则可使用外部类型名称。 例如,因为在查询中的参数需要完全限定的名称的 OData 中的类型名称,如 [类型名称].[值]。 外部值 如果创建的列类型为 OptionSet:此属性映射到所选项的外部数据源中的相应值。 输入的此值用于确定要在应用中显示的选项项。 根据需要完成更多属性。 有关这些属性的详细信息,请参阅 “创建和编辑列”。
在“列属性”页上选择“保存并关闭”。
在解决方案资源管理器工具栏中,选择保存。
在解决方案资源管理器工具栏中,选择发布。
关闭解决方案资源管理器。
使用虚拟表时的注意事项
虚拟表具有以下限制。
- 无法将现有表转换为虚拟表。
- 默认情况下,虚拟表仅包含名称和 ID 列。 其他系统管理列(如“状态”或“创建日期/修改日期”)不受支持。
- 虚拟表不支持具有 Currency、Image 或 Customer 数据类型的自定义列。
- 虚拟表不支持审核。
- 虚拟表列不能用于汇总列或计算列。
- 虚拟表不能为表的活动类型。
- 虚拟表不支持仪表板和图表。
- 许多影响表行的功能无法通过虚拟表启用。 示例包括队列、知识管理、SLA、重复检测、更改跟踪、移动脱机功能、列安全性、Dataverse 搜索和 Power Pages 解决方案。
- 虚拟表是组织拥有的,不支持行级 Dataverse 安全概念。 建议为外部数据源实施您自己的安全模型。
- 更新时验证的列元数据属性不适用于虚拟表。 例如,虚拟表列上的整数列可能设置为最小值为零。 但是,由于该值来自外部数据源,因此当从虚拟表中检索到的值时,查询将返回小于零的值。 查询中不表示最小值属性。 您仍需将该值筛选为大于 0(如果需要这样)。
- 虚拟表不支持更改跟踪,无法使用 Dataverse 功能(如 Data export Service 或 Azure Synapse Link for Dataverse)进行同步。
- 使用包含的 OData v4 数据提供程序的虚拟表在出站端口 443 上启用。
- 虚拟表不支持业务流程。 详细信息:当用户激活业务流程时收到意外错误
当用户激活业务流程时收到意外错误
当用户尝试激活业务流程时,他们可能会收到“意外错误”消息。 查看日志文件时会显示以下日志条目。
ErrorCode:0x80040216 消息:System.Web.HttpUnhandledException:引发了“System.Web.HttpUnhandledException”类型的异常。 ---> Microsoft.Crm.CrmException:无法为虚拟实体启用业务流程
出现此问题的原因是虚拟表不支持业务流程。