0

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

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

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

4

1 回答 1

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获取列表名称,另一个contact用于获取联系人的详细信息
  • 您只想显示某些attributes,因此它们每个都需要在您的link-entity
  • 您没有指定任何过滤,因此将返回所有联系人列表的所有成员资格

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

于 2012-09-13T11:25:46.300 回答