2014-02-14 3 views
0

Я работаю над приложением, которое все основные данные от объектов CRM раздельно используют Microsoft.Xrm.Sdk (веб-сервис CRM). Проблема: в настоящее время мы вызываем все сущности отдельно, что делает время вызова вызова WCF.Dynamics CRM 2011, выберите несколько объектов в одном вызове

Я пытаюсь реализовать решение, в котором я буду называть отдельные объекты за один раз, так что в одном вызове WCF у меня есть все основные данные.

Таким образом, Sql Equivalent будет выбирать x из Entity1; Выберите y из Entity2

Я использую QueryExpression &, затем вызывая метод RetrieveMultiple (query).

Я нашел http://msdn.microsoft.com/en-us/library/jj863604.aspx, в котором говорится, что я могу использовать несколько запросов, но также нашел, что он используется для создания, обновления, удаления & Not for Select.

Не могли бы вы направить все варианты, на которые я могу пойти.

ответ

1

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

Другим вариантом является чтение из базы данных SQL напрямую, это поддерживается, если вы используете отфильтрованные представления. Это, как правило, будет быстрее

1

Kevin в основном правильный, поскольку он хочет извлечь из нескольких объектов с помощью одного вызова WCF. Лучшее, что вы, вероятно, можете сделать, это объединить некоторые сущности.

Если вы в первую очередь обеспокоены скоростью, более того, чем количество вызовов WCF, вы можете сделать это многопоточным. Вам просто нужно, чтобы убедиться, что у вас есть отдельный IOrganizationService на поток, и что вы увеличили максимальное количество подключений к удаленному компьютеру:

<system.net> 
    <connectionManagement> 
    <add address="*" maxconnection="100" /> 
    </connectionManagement> 
</system.net> 

Если с другой стороны, вы действительно обеспокоены количество вызовов WCF, вы можете поместить весь свой код в плагин или рабочий процесс. Когда вы находитесь в контексте плагина или рабочего процесса, любые вызовы CRM через IOrganizationService не будут использовать вызов WCF, поскольку он уже находится на сервере. Это добавляет много накладных расходов на серверы CRM, поэтому просто будьте осторожны.

+0

Если бы вы думали о создании нового действия, которое возвращает несколько разных коллекций Entity? – Bvrce

+0

@Bvrce интересная мысль ... У меня не было опыта с этим. Насколько я знаю Действия, предполагается объединить несколько действий через рабочий процесс. Пока рабочий процесс смог заполнить коллекцию ответов, тогда да, он должен работать. – Daryl

Смежные вопросы