2017-03-16 3 views
2

에있는 관계에 있습니다. 시스템 사용자에게 주문하십시오.이 관계에서 끝나는 사용자 목록을 얻으려고합니다. 그러나이 예외는 throw합니다 추가 정보 : 'SystemUser'엔터티에 Name = 'salesorderid'특성이 없습니다..잡동사니 목록이 dynamics 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에서보세요 그러나 systemuser로부터. 그래서 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") 
         } 
        } 
       } 
      } 
     } 
    } 
}; 

을 단순히 고급 찾기 fetchXml를 다운로드하고 SDK를 FetchXmlToQueryExpressionRequest 메시지를 사용하여 QueryExpression로 변환 사용하여 쿼리를 수행 문제가 발생 QueryExpressions이있는 경우. 여기에 몇 가지 샘플이 있습니다. https://msdn.microsoft.com/en-us/library/hh547457.aspx