2017-03-16 2 views
2

私はダイナミクスCRMのフォームに多人数のリレーションシップを持っています。システムユーザーへの注文と次のスニペットから、このリレーションシップで終了するユーザーのリストを取得しようとしています。しかし、これは例外をスローする追加情報: 'SystemUser'エンティティはName = 'salesorderid'の属性を含んでいません。ダイナミックスのリレーションにユーザーのリストがありますcrm

私はそれに何が欠けていますか?

private void grabRelatedUsers(IOrganizationService service){ 
QueryExpression sysUsersQuery = new QueryExpression() 
      { 
       EntityName = "systemuser", 
       ColumnSet = new ColumnSet("systemuserid"), 
       LinkEntities = { 
        new LinkEntity() { 
        LinkFromEntityName = "systemuser", 
        LinkToEntityName = "new_salesorder_systemuser", 
        LinkFromAttributeName = "systemuserid", 
        LinkToAttributeName = "systemuserid", 
        JoinOperator = JoinOperator.Inner 
        }, 
        new LinkEntity() { 
         LinkFromEntityName = "new_salesorder_systemuser", 
         LinkToEntityName = "salesorder", 
         LinkFromAttributeName = "salesorderid", 
         LinkToAttributeName = "salesorderid", 
         JoinOperator = JoinOperator.Inner, 
         LinkCriteria = new FilterExpression() { 
          Conditions = { 
           new ConditionExpression("salesorderid",ConditionOperator.Equal,orderId) 
          } 
         } 
        }, 
        new LinkEntity().AddLink("systemuser","systemuserid","systemuserid") 
        }, 

      }; 

      EntityCollection subGridUsers = service.RetrieveMultiple(sysUsersQuery); 
} 

答えて

1

リンクされたエンティティを正しくネストしませんでした。 、Nの関係、あなたがnew_salesorder_systemuserからsalesorderをリンクすることはできません:あなたは、リンクされたエンティティにも営巣してある必要がありますボックスNの外だmecauseを見ることができるように

<fetch version="1.0" output-format="xml-platform" mapping="logical"> 
    <entity name="systemuser"> 
    <attribute name="systemuserid" /> 
    <link-entity name="new_salesorder_systemuser" from="systemuserid" to="systemuserid" visible="false" intersect="true"> 
     <link-entity name="salesorder" from="salesorderid" to="salesorderid" alias="ab"> 
     <filter type="and"> 
      <condition attribute="salesorderid" operator="eq" value="XXXXXXXXXXXXXXX" /> 
     </filter> 
     </link-entity> 
    </link-entity> 
    </entity> 
</fetch> 

は:あなたのシナリオのために生成されるfetchXMLを見てくださいシステム・ユーザーからのものです。だから、のQueryExpressionは、次のようになります。

QueryExpression sysUsersQuery = new QueryExpression() 
{ 
    EntityName = "systemuser", 
    ColumnSet = new ColumnSet("systemuserid"), 
    LinkEntities = { 
     new LinkEntity 
     { 
      LinkFromEntityName = "systemuser", 
      LinkToEntityName = "new_salesorder_systemuser", 
      LinkFromAttributeName = "systemuserid", 
      LinkToAttributeName = "systemuserid", 
      JoinOperator = JoinOperator.Inner, 
      LinkEntities = 
      { 
       new LinkEntity() 
       { 
        EntityAlias = "ab", 
        LinkFromEntityName = "systemuser", 
        LinkToEntityName = "salesorder", 
        LinkFromAttributeName = "salesorderid", 
        LinkToAttributeName = "salesorderid", 
        JoinOperator = JoinOperator.Inner, 
        LinkCriteria = new FilterExpression() 
        { 
         Conditions = { 
          new ConditionExpression("salesorderid",ConditionOperator.Equal, "sfsdf") 
         } 
        } 
       } 
      } 
     } 
    } 
}; 

あなたは問題QueryExpressionsの生成を持っている場合は、単に高度を使用してクエリは、検索fetchXmlをダウンロードして、SDK FetchXmlToQueryExpressionRequestメッセージを使用してのQueryExpressionに変換します。いくつかのサンプルがあります: https://msdn.microsoft.com/en-us/library/hh547457.aspx

関連する問題