FetchXml:只获取所有相关记录都满足条件的记录

FetchXml: get only records for which all related records satisfy the condition

Dynamics 365 v8.2。 FetchXml.

每个 isv_entity1 记录可以与一个或多个 isv_entity2 记录链接(一对多)。我需要获取 only isv_entity1 记录,其中 all 链接 isv_entity2 记录符合某些条件。如果至少有一条链接的 isv_entity2 记录不满足条件,则 isv_entity1 记录不应落入选择。

如何通过 FetchXml 完成?

如果我将使用此查询:

<fetch distinct='true' >
  <entity name='isv_entity1' >
    <attribute name='isv_entity1id' />    
    <link-entity name='isv_entity2' from='isv_entity2id' to='isv_entity2id' >
      <filter type='and' >
          <condition attribute='isv_someProp' operator='eq' value='someValue' />
      </filter>
    </link-entity>
  </entity>
</fetch>

然后我得到 isv_entity1 条记录,其中 至少有一个 链接 isv_entity2 符合条件。但这和我需要的不一样。

您需要的是:find all parent records where all child records have a given value (but not just some child records)

以上 sql 等同于您的要求,不幸的是 FetchXML 不支持子查询。

因此,要么您必须使用两个查询,要么查询所有记录并迭代到 verify/filter 符合您条件的结果