Возможны ли составные соединения с использованием FetchXml в Microsoft Dynamics CRM 4.0?

Я использую FetchXml для запроса CRM 4.0. У нас есть особый случай, который потребует составного соединения между объектами CRM. Схема FetchXml указывает, что разрешены несколько элементов сущности ссылки, а также указывает, что несколько фильтров Элементы / condition могут быть добавлены в объект ссылки. Проблема, с которой я столкнулся, заключается в том, что атрибут value элемента условия, похоже, не разрешает имя объекта / столбца. Ожидается явно заявленное значение.

Например, FetchXml позволяет указать это:

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

... что делает эквивалент этого T-SQL:

JOIN myentity on column1 = column2

И это позволяет вам указать это:

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

... который является эквивалентом этого T-SQL:

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

Однако FetchXml не предоставляет эквивалента:

JOIN myentity on column1 = column2 AND column3 = column4 

Обратите внимание на разницу. FetchXml предоставляет условия в соединении, но, похоже, он обеспечивает составное соединение, то есть соединение нескольких столбцов.

Кто-нибудь в киберпространстве смог выполнить составное соединение с использованием FetchXml в CRM 4.0? Спасибо!

Больше информации:

Я ищу ответ, в котором для этого используется FetchXml, а не синтаксис SQL или QueryExpression. Приведенный выше SQL нужен только для объяснения концепции.


person WiregrassCoder    schedule 28.10.2010    source источник


Ответы (1)


Нет, это не разрешает. Fetch XML довольно ограничен, когда дело доходит до чего-либо неосновного в объединениях. Если мне интересно, я обычно проверяю свой запрос с помощью Stunnware Tools . Если его там не выставить, это, вероятно, невозможно.

К сожалению, в подобных ситуациях я обычно (вынужден) использую подход с несколькими запросами к проблеме.

Я знаю, что вы сказали, что вас это не интересует, но я уверен, что QueryExpression с этим тоже не справится. По моему опыту, он предлагает только часть функций fetchxml.

person John Hoven    schedule 01.11.2010
comment
Согласовано. После того, как я разместил этот вопрос, я в конечном итоге экспериментировал с несколькими запросами ... и использовал LINQ, чтобы объединить два набора результатов в то, что мне нужно. К счастью, LINQ действительно поддерживает соединения по нескольким столбцам! Решение LINQ чистое и удобочитаемое. - person WiregrassCoder; 02.11.2010
comment
О да? Было ли это с использованием новых расширенных расширений для разработчиков (Microsoft.Xrm.Client.sdk) и классов, созданных с помощью CrmSvcUtil.exe? К сожалению, в нашем решении слишком много настраиваемых сущностей / отношений (что-то), и я еще не смог переключиться на это (таймауты). Предположительно они позволят вам установить тайм-аут в будущем. - person John Hoven; 02.11.2010