查询分层数据
发布日期: 2016年11月
适用于: Dynamics CRM 2015
Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 介绍了将特定自引用一对多实体关系定义为层次结构的功能。 您可以在层次结构中编写可以返回相关数据的查询。
您可以利用新查询条件运算符来查询带有显式分层关系的实体。 这些运算符仅适用于专门定义为分层关系的实体关系。 当使用 QueryExpression 或 FetchExpression 时,您可以使用新条件运算符检索分层数据。
备注
OData 终结点仍不支持查询分层数据。
分层数据的条件运算符
在查询分层数据时,请使用以下运算符设置条件。
FetchXML |
ConditionOperator |
说明 |
---|---|---|
above |
Above |
返回所引用记录的分层祖先子项中的所有记录。 |
eq-or-above |
AboveOrEqual |
返回层次结构中所引用的记录及其上方的所有记录。 |
under |
Under |
返回层次结构中所引用记录下的所有子记录。 |
eq-or-under |
UnderOrEqual |
返回层次结构中所引用记录及其下方的所有子记录。 |
not-under |
NotUnder |
返回层次结构中非所引用记录下的所有子记录。 |
eq-owneduseroruserhierarchy |
OwnedByMeOrMyReports |
当使用分层安全模型时,等于当前用户或者其报告层次结构 |
eq-useroruserhierarchyandteams |
OwnedByMeOrMyReportsAndTeams |
当使用分层安全模型时,等于当前用户及其团队或其报告层次结构及其团队 |
当查询分层数据时,将限制递归
由于查询分层数据可以是资源密集型,所以使用 Above、 AboveOrEqual、Under、 UnderOrEqual 和 NotUnder 条件运算符时,允许的分层查询条件存在 100 递归的默认限制。
通过部署 Web 服务,使用 Windows PowerShell 命令可以调整这些限制。详细信息:TechNet:使用 Windows PowerShell 管理部署。
OwnedByMeOrMyReports 和 OwnedByMeOrMyReportsAndTeams 是取决于“层次结构深度”设置的分层安全条件运算符,该设置位于“设置” > “安全” > “层次结构安全”。 此设置值存储在 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 中的层次结构可视化
© 2017 Microsoft。 保留所有权利。 版权