De esta forma y con un lenguaje basado en formato XML, podemos hacer consultas de forma bastante sencilla, incluso se permite hacer “joins” mediante los “link-entity” ademas de otras funcionalidades (ver el esquema de los “FetchXml” aquí: http://msdn.microsoft.com/en-us/library/gg309405.aspx).
Bien, aquí hay un ejemplo de un XML con una “linked-entity” (Join):
1: <fetch mapping='logical'>
2: <entity name='account'>
3: <attribute name='accountid'/>
4: <attribute name='name'/>
5: <link-entity name='systemuser' to='owninguser'>
6: <filter type='and'>
7: <condition attribute='lastname' operator='ne' value='Cannon' />
8: </filter>
9: </link-entity>
10: </entity>
11: </fetch>
En caso de hacer una consulta muy grande en cuanto a linked-entities, hay que tener en cuenta que hay un máximo definido que es de 10. Si nos pasamos de esto, nos puede aparecer un error como el siguiente:
1: <error>
2: <code>0x8004430d</code>
3: <description>Number of link entities in query exceeded maximum limit.</description>
4: <type>Platform</type>
5: </error>
1: INSERT INTO DeploymentProperties(Id,ColumnName,IntColumn,Encrypted)
2: VALUES('6C3BE16F-943B-E111-9AE4-00155D010A39','QueryLinkEntityLimit',20,0)
3:
4: select * from DeploymentProperties where ColumnName='QueryLinkEntityLimit'
Espero les sirva. tener en cuenta que esto es una solución no soportada, y que solo funciona en entornos OnPremise.
Saludo!