在CRM Dynamics中创建棘手的获取XML

时间:2012-09-13 10:51:15

标签: dynamics-crm fetchxml

我想进行高级搜索,将来自两个不同实体的字段组合在一起,这些实体彼此之间存在多对多关系。在SQL中,它非常简单,但在Dynamics中我被卡住了。

我想得到一般答案,但如果有帮助,这里有具体细节。任务是创建数据库中所有联系人的列表(列“名称”和“电子邮件”)与第三列相结合,该列是联系人的营销列表的名称有问题属于。当然,同一个人可能会多次列出,但唯一性不是必需的(此外,每一行将通过联系人姓名和营销列表的组合等同于PK)

可行吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

首先,这是您的查询:

<fetch mapping='logical'>
    <entity name='listmember'>
        <link-entity name='list' from='listid' to='listid'>
            <attribute name='listname'/>
        </link-entity>
        <link-entity name='contact' from='contactid' to='entityid'>
            <attribute name='fullname'/>
            <attribute name='emailaddress1'/>
        </link-entity>
    </entity>
</fetch>

示例结果:

<resultset morerecords='0' paging-cookie='<cookie page="1"><listmemberid last="{E1B03485-0000-0000-0000-00155D107003}" first="{A74C877A-0000-0000-0000-00155D107003}" /></cookie>'>
    <result>
        <listmemberid>{A74C877A-0000-0000-0000-00155D107003}</listmemberid>
        <listid.listname>List 1</listid.listname>
        <entityid.fullname>Amy Pickle</entityid.fullname>
        <entityid.emailaddress1>apickle@domain.com</entityid.emailaddress1>
    </result>
    <result>
        <listmemberid>{A94C877A-0000-0000-0000-00155D107003}</listmemberid>
        <listid.listname>List 2</listid.listname>
        <entityid.fullname>Andrew Colley</entityid.fullname>
        <entityid.emailaddress1>colley@domain.com</entityid.emailaddress1>
    </result>
</resultset>

我不确定我能用一般术语来描述这一点,但是:

  • 您正在寻找列表成员,因此listmember必须是您返回的根实体
  • 对于包含您要显示的属性的实体的每个关系,您需要定义link-entity(在这种情况下,一个到list以获取列表名称,另一个到{{1}获取联系方式的详细信息
  • 您只想显示某些contact,因此需要在attribute
  • 中定义每个link-entity
  • 您未指定任何过滤,因此将返回所有列表的所有成员资格

我从不手工做这些。以前我使用的是James Downey的FetchXML Builder,但我相信这已不再可用了 - Stunnware做了类似的工具。