2

我有一个需要针对 CRM 执行的查询。它相当于 SQL 中的以下内容:

SELECT A.*, B.*
FROM Table1 A INNER JOIN Table2 B
ON A.ID = B.ID

我创建了一个查询并添加了如下链接:

link.JoinOperator = JoinOperator.Inner;
link.LinkFromEntityName = EntityName.new_Table1.ToString();
link.LinkFromAttributeName = "new_Table1ID";
link.LinkToEntityName = EntityName.new_Table2.ToString();
link.LinkToAttributeName = "new_Table2ID";
query.LinkEntities = new LinkEntity[] { link };

但是,它只返回 new_Table1 中的列。

有没有办法以这种方式链接并从两个实体返回列,而无需创建两个查询?

4

2 回答 2

2

QueryExpression 不支持这一点。您需要使用 Fetch XML。

从 SDK 中的“使用 FetchXML” - 你最终会得到这样的东西:

<fetch mapping='logical'>
      <entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
<link-entity name='systemuser' to='owninguser'>
   <filter type='and'>
      <condition attribute='lastname' operator='ne' value='Cannon' />
   </filter>
   <attribute name='name' />
</link-entity>
      </entity>
   </fetch>

如果您还没有使用过 FetchXML,我强烈推荐http://www.stunnware.com/?area=products&group=swtools4来构建和测试 FetchXML。这样您就可以预览您的 Result XML。

于 2009-03-05T17:38:34.320 回答
0

您也可以使用LinqtoCRM。检索系统用户角色的查询如下所示:

var res = from u in p.Linq()
        join sr in p.Linq() on u.systemuserid.Value equals sr.systemuserid.Value
        join r in p.Linq() on sr.roleid.Value equals r.roleid.Value
        select new { u.fullname, r.name };

这适用于正常和(使用 CRMMetal)多对多关系。您可以在这里观看网络广播。

于 2009-03-08T09:40:43.333 回答