2010-10-28 13 views
7

Sto utilizzando FetchXml per eseguire una query su CRM 4.0. Abbiamo un caso speciale che richiederà un join composito tra le entrate di CRM. FetchXml schema indica che sono consentiti più elementi di entità di collegamento e indica inoltre che più elementi filtro/condizione possono essere aggiunti a un'entità di collegamento. Il problema che sto affrontando è che l'attributo value dell'elemento condition non sembra permettere un nome di entità/colonna. Si aspetta un valore dichiarato esplicitamente.I join compositi sono possibili utilizzando FetchXml in Microsoft Dynamics CRM 4.0?

Per esempio, FetchXML permette di specificare questo:

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

... che fa l'equivalente T-SQL di questo:

JOIN myentity on column1 = column2 

E consente di specificare questo:

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

... che è l'equivalente T-SQL di questo:

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

FetchXML non appare, tuttavia, di fornire un equivalente di questo:

JOIN myentity on column1 = column2 AND column3 = column4 

nota la differenza. FetchXml fornisce condizioni nel join, ma sembra fornire un join composito, ovvero un join su più colonne.

Qualcuno nel cyberspazio è stato in grado di eseguire un join composito utilizzando FetchXml in CRM 4.0? Grazie!

Maggiori informazioni:

sto caccia una risposta che utilizza FetchXML per raggiungere questo obiettivo - non SQL o la sintassi QueryExpression. L'SQL sopra c'è solo per spiegare il concetto.

risposta

6

No, non lo consente. Il recupero dell'XML è piuttosto limitato quando si tratta di qualcosa di non base nei join. Se sono curioso, di solito collaudo la mia query usando Stunnware Tools. Se non è esposto, probabilmente non può essere fatto.

Sfortunatamente, in situazioni come queste, di solito finisco (sono obbligato a) ad adottare un approccio di query multiple al problema.

So che hai detto che non ti interessa, ma sono sicuro che anche QueryExpression non lo gestirà. Nella mia esperienza offre solo un sottoinsieme della funzionalità fetchxml.

+0

concordato. Dopo aver postato questa domanda, ho finito per sperimentare più query ... e usando LINQ per combinare i due set di risultati in ciò che mi serve. Fortunatamente LINQ * * supporta i join su più colonne! La soluzione LINQ è pulita e leggibile. – WiregrassCoder

+0

Oh sì? Era quello che utilizzava le nuove estensioni avanzate per sviluppatori (Microsoft.Xrm.Client.sdk) e le classi generate con CrmSvcUtil.exe? Sfortunatamente la nostra soluzione ha troppe entità/relazioni personalizzate (qualcosa) e non ho ancora potuto passare a questo (timeout). Presumibilmente ti permetteranno di impostare il timeout in futuro. –

Problemi correlati