查询分层数据

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

Microsoft Dynamics 365(在线或本地) 介绍了将特定自引用一对多实体关系定义为层次结构的功能。 您可以在层次结构中编写可以返回相关数据的查询。

您可以利用新查询条件运算符来查询带有显式分层关系的实体。 这些运算符仅适用于专门定义为分层关系的实体关系。 当使用 QueryExpressionFetchExpression 时,您可以使用新条件运算符检索分层数据。

备注

OData 终结点仍不支持查询分层数据。

分层数据的条件运算符

在查询分层数据时,请使用以下运算符设置条件。

FetchXML

ConditionOperator

说明

above

Above

返回所引用记录的分层祖先子项中的所有记录。

eq-or-above

AboveOrEqual

返回层次结构中所引用的记录及其上方的所有记录。

under

Under

返回层次结构中所引用记录下的所有子记录。

eq-or-under

UnderOrEqual

返回层次结构中所引用记录及其下方的所有子记录。

not-under

NotUnder

返回层次结构中非所引用记录下的所有子记录。

eq-owneduseroruserhierarchy

OwnedByMeOrMyReports

当使用分层安全模型时,等于当前用户或者其报告层次结构

eq-useroruserhierarchyandteams

OwnedByMeOrMyReportsAndTeams

当使用分层安全模型时,等于当前用户及其团队或其报告层次结构及其团队

当查询分层数据时,将限制递归

由于查询分层数据可以是资源密集型,所以使用 AboveAboveOrEqualUnderUnderOrEqualNotUnder 条件运算符时,允许的分层查询条件存在 100 递归的默认限制。

通过部署 Web 服务,使用 Windows PowerShell 命令可以调整这些限制。详细信息:TechNet:使用 Windows PowerShell 管理部署

OwnedByMeOrMyReportsOwnedByMeOrMyReportsAndTeams 是取决于“层次结构深度”设置的分层安全条件运算符,该设置位于“设置” > “安全” > “层次结构安全”。 此设置值存储在 Organization.MaxDepthForHierarchicalSecurityModel 属性中。

检索与子记录相关的层次结构数量

使用基于查询的 FetchXML 中的 rowaggregate 属性,检索与子记录相关的层次结构数量。 当该值设置为 CountChildren 时,包含该记录的子记录总数的值将列入 EntityCollection。 例如,以下查询将包含 AccountChildren 聚合值,该值表示分层关系中子客户类型的数量,其中 {0} 参数表示父记录的 AccountId

<fetch distinct='false' no-lock='false' mapping='logical'>
  <entity name='account'>
    <attribute name='name' />
    <attribute name='accountid' />
    <attribute name='accountid' rowaggregate='CountChildren' alias='AccountChildren'/>
    <filter type='and'>
      <condition attribute='accountid' operator='under' value='{0}' />
    </filter>
  </entity>
</fetch>

备注

返回的聚合值表示所有子记录,包括用户可能无法读取的任何内容。

另请参阅

ConditionOperator
自定义实体关系元数据
使用 FetchXML 构建查询
使用 QueryExpression 构建查询
FetchXML schema
视频:Microsoft Dynamics CRM 2015 中的层次结构可视化

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权