Dynamics crm 具有指向同一表/实体的链接的CRM QueryExpression

Dynamics crm 具有指向同一表/实体的链接的CRM QueryExpression,dynamics-crm,Dynamics Crm,我正在尝试使用QueryExpression和LinkEntity在CRM中执行以下SQL等效查询。有什么想法吗?我相当困惑。我以前使用过LinkEntity,但不确定如何引用或别名相同的实体类型 select t1.UoMId, t1.BaseUoM, t1.UoMScheduleId, t1.Name, t1.Quantity from UoMBase t1 inner join UoMBase t2 on t1.UoMScheduleId = t2.UoMScheduleId where

我正在尝试使用QueryExpression和LinkEntity在CRM中执行以下SQL等效查询。有什么想法吗?我相当困惑。我以前使用过LinkEntity,但不确定如何引用或别名相同的实体类型

select t1.UoMId, t1.BaseUoM, t1.UoMScheduleId, t1.Name, t1.Quantity
from UoMBase t1
inner join UoMBase t2 on t1.UoMScheduleId = t2.UoMScheduleId
where t2.UoMId = '57E59AB7-AC8F-E511-80F0-005056BE36DF';
这将导致以下实体记录:


尝试将以下内容转换为QueryExpression:

<fetch mapping="logical" version="1.0">
  <entity name="UoM">
    <attribute name="UoMId" />
    <attribute name="BaseUoM" />
    <attribute name="UoMScheduleId" />
    <attribute name="Name" />
    <attribute name="Quantity" />
    <link-entity name="UoM" from="UoMScheduleId" to="UoMScheduleId" alias="t2" link-type="inner">
    <filter>
      <condition attribute="UoMId" operator="eq" value="57E59AB7-AC8F-E511-80F0-005056BE36DF" />
    </filter>
    </link-entity>
  </entity>
</fetch>

QueryExpression query = new QueryExpression("uom");
query.ColumnSet = new ColumnSet(new[] { "uomid", "baseuom", "uomscheduleid", "name", "quantity", });
query.LinkEntities.Add(new LinkEntity("uom", "uom", "uomscheduleid", "uomscheduleid", JoinOperator.Inner) { EntityAlias = "t2" });
query.Criteria.AddCondition("t2", "uomid", ConditionOperator.Equal, guidID);
EntityCollection result   = OrganizationService.RetrieveMultiple(query);

QueryExpression查询=新的QueryExpression(“uom”);
query.ColumnSet=new ColumnSet(new[]{“uomid”、“baseuom”、“uomscheduleid”、“name”、“quantity”、});
添加(新链接实体(“uom”、“uom”、“uomscheduleid”、“uomscheduleid”、JoinOperator.Inner){EntityAlias=“t2”});
query.Criteria.AddCondition(“t2”,“uomid”,ConditionOperator.Equal,guidID);
EntityCollection结果=OrganizationService.RetrieveMultiple(查询);

尝试将以下内容转换为QueryExpression:

<fetch mapping="logical" version="1.0">
  <entity name="UoM">
    <attribute name="UoMId" />
    <attribute name="BaseUoM" />
    <attribute name="UoMScheduleId" />
    <attribute name="Name" />
    <attribute name="Quantity" />
    <link-entity name="UoM" from="UoMScheduleId" to="UoMScheduleId" alias="t2" link-type="inner">
    <filter>
      <condition attribute="UoMId" operator="eq" value="57E59AB7-AC8F-E511-80F0-005056BE36DF" />
    </filter>
    </link-entity>
  </entity>
</fetch>

QueryExpression query = new QueryExpression("uom");
query.ColumnSet = new ColumnSet(new[] { "uomid", "baseuom", "uomscheduleid", "name", "quantity", });
query.LinkEntities.Add(new LinkEntity("uom", "uom", "uomscheduleid", "uomscheduleid", JoinOperator.Inner) { EntityAlias = "t2" });
query.Criteria.AddCondition("t2", "uomid", ConditionOperator.Equal, guidID);
EntityCollection result   = OrganizationService.RetrieveMultiple(query);

QueryExpression查询=新的QueryExpression(“uom”);
query.ColumnSet=new ColumnSet(new[]{“uomid”、“baseuom”、“uomscheduleid”、“name”、“quantity”、});
添加(新链接实体(“uom”、“uom”、“uomscheduleid”、“uomscheduleid”、JoinOperator.Inner){EntityAlias=“t2”});
query.Criteria.AddCondition(“t2”,“uomid”,ConditionOperator.Equal,guidID);
EntityCollection结果=OrganizationService.RetrieveMultiple(查询);

将最后一个代码添加到您的答案中,它就起作用了。我想知道我的QueryExpression和你的fetch是否可以通过更好的别名来改进一点。我想知道这一切是否只是基于属性和参数的顺序而起作用,这并不理想,但非常感谢指针。将最终代码添加到您的答案中,它就起作用了。我想知道我的QueryExpression和你的fetch是否可以通过更好的别名来改进一点。我想知道这一切是否只是基于属性和参数的顺序工作,这并不理想,但非常感谢指针。