CRM Web API随过滤器一起扩展-内部联接还是左联接?

问题描述

我正在尝试使用Web api查询,并且没有fetchxml,我能够构建此端点,但是结果集的行为类似于LEFT OUTER JOIN,但是我需要INNER JOIN。

new_demo正在查找new_currentappointment(最近的记录是从子网格列表中捕获的),new_currentappointment正在查找new_user

我想要带有new_demo的{​​{1}}列表,其中new_currentappointment_lookup是过滤器。

new_user_lookup

结果是将系统中的每个https://crmdev.crm.dynamics.com/api/data/v9.1/new_demo?$select=new_attribute_one&$expand=new_currentappointment_lookup($select=new_attribute_two;$filter=_new_user_lookup_value eq <guid>) 都带入系统,但是扩展过滤器只会得到空值。如何从主结果中的扩展实体中消除过滤后的空结果?

new_demo

我正在寻找ASP.NET web api documentation中解释的结果,但找不到Dynamics CRM Web API的结果。还有其他简便的方法吗?

解决方法

来自Doc feedback: CRM web api expand along with filter - inner join or left join?

这是您的情况的等效查询:

{{webapiurl}}incidents?$select=title
&$expand=customerid_account($select=name;
$expand=primarycontactid($select=fullname;
$filter=contactid eq '384d0f84-7de6-ea11-a817-000d3a122b89'))

$ filter仅控制记录是否扩展。

这是两者之间的区别:

{
    "@odata.etag": "W/\"31762030\"","title": "Sample Case","incidentid": "d3d685f9-cddd-ea11-a813-000d3a122b89","customerid_account": {
        "name": "Fourth Coffee","accountid": "ccd685f9-cddd-ea11-a813-000d3a122b89","primarycontactid": {
            "fullname": "Charlie Brown","contactid": "384d0f84-7de6-ea11-a817-000d3a122b89"
        }
    }
}

这:

{
    "@odata.etag": "W/\"31762030\"","primarycontactid": null
    }
}

请参见this example(Ctrl + F“展开的嵌套过滤器”),其中返回了所有人员,但仅扩展了与$ filter匹配的行程。

因此,扩展中的$ filter行为将仅控制是否返回详细信息。 这不是INNER JOIN行为。 您将需要使用FetchXml来实现。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...