2010-10-28 11 views
7

J'utilise FetchXml pour interroger CRM 4.0. Nous avons un cas particulier qui nécessitera une jointure composite entre les entités CRM. Le FetchXml schema indique que plusieurs éléments d'entité de liaison sont autorisés et indique également que plusieurs éléments de filtre/condition peuvent être ajoutés à une entité de liaison. Le problème auquel je suis confronté est que l'attribut value de l'élément condition ne semble pas autoriser un nom d'entité/colonne. Il attend une valeur explicitement déclarée.Les jointures composites sont-elles possibles à l'aide de FetchXml dans Microsoft Dynamics CRM 4.0?

Par exemple, FetchXml vous permet de spécifier ceci:

<link-entity name='myentity' from='column1' to='column2'/> 

... qui fait l'équivalent T-SQL de ceci:

JOIN myentity on column1 = column2 

Et il vous permet de spécifier ceci:

<link-entity name='myentity' from='column1' to='column2'> 
    <filter type='and'> 
     <condition attribute='column3' operator='eq' value='myvalue' /> 
    </filter> 
</link> 

... qui est l'équivalent T-SQL de ceci:

JOIN myentity on column1 = column2 AND column3 = 'myvalue' 

FetchXml ne semble toutefois pas, de fournir un équivalent de ceci:

JOIN myentity on column1 = column2 AND column3 = column4 

Notez la différence. FetchXml fournit des conditions dans la jointure, mais il semble fournir une jointure composite, c'est-à-dire une jointure entre plusieurs colonnes.

Est-ce que quelqu'un dans le cyberespace a été en mesure d'effectuer une jointure composite en utilisant FetchXml dans CRM 4.0? Merci!

Plus d'informations:

Je chasse une réponse qui utilise FetchXml pour ce faire - pas SQL ou la syntaxe QueryExpression. Le SQL ci-dessus est là juste pour expliquer le concept.

Répondre

6

Non, cela ne l'autorise pas. Fetch XML est assez limité quand il s'agit de quelque chose de non-basique dans les jointures. Si je suis curieux, je teste habituellement ma requête en utilisant Stunnware Tools. S'il n'est pas exposé là, il ne peut probablement pas être fait. Malheureusement, dans des situations comme celles-ci, je finis habituellement (je suis obligé de) prendre une approche de requête multiple pour le problème.

Je sais que vous avez dit que cela ne vous intéressait pas - mais je suis sûr que QueryExpression ne s'en occupera pas non plus. Dans mon expérience, il offre seulement un sous-ensemble de la fonctionnalité fetchxml.

+0

D'accord. Après avoir posté cette question, j'ai fini par expérimenter plusieurs requêtes ... et utiliser LINQ pour combiner les deux ensembles de résultats dans ce dont j'ai besoin. Heureusement, LINQ * supporte * les jointures sur plusieurs colonnes! La solution LINQ est propre et lisible. – WiregrassCoder

+0

Oh oui? Était-ce en utilisant les nouvelles extensions développeur avancées (Microsoft.Xrm.Client.sdk) et les classes générées avec CrmSvcUtil.exe? Malheureusement, notre solution a trop d'entités/relations personnalisées (quelque chose) et je n'ai pas encore été capable de passer à autre chose (timeouts). Supposément, ils vont vous permettre de définir le délai d'attente dans le futur. –