2009-03-05 4 views
2

CRMに対して実行する必要があるクエリがあります。これは、SQLで、次のと同等です:Webサービスを使用してCRM 4.0クエリのエンティティをリンクし、両方から列を返すにはどうすればよいですか?

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

私は、クエリを作成し、次のようにlinkentityを追加しました:

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から列を返します。

この方法でリンクし、2つのクエリを作成せずに両方のエンティティからcolumnnsを返す方法はありますか?

答えて

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をテスト。こうすることで、結果XMLのプレビューを取得できます。

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付き)多対多の関係の両方の間で動作します。systemusersの役割を取得するクエリは、次のようになります。キャストウェブキャストhereを見ることができます。

関連する問題