Dynamics CRM 2011,在单个调用中选择多个实体

时间:2014-02-14 08:45:18

标签: dynamics-crm-2011

正在开发应用程序,其中来自CRM实体的所有主数据分别使用Microsoft.Xrm.Sdk(CRM Web服务)。  问题是,目前我们正在单独调用所有实体,这使得WCF调用earch时间。

我正在尝试实现解决方案,其中我将一次调用单独的实体,以便在1 WCF调用中我拥有所有主数据。

所以Sql Equivalent将从Entity1中选择x;从Entity2中选择y

我正在使用QueryExpression&然后调用RetrieveMultiple(查询)方法。

我找到http://msdn.microsoft.com/en-us/library/jj863604.aspx,表示我可以使用多个请求,但我发现它还用于创建,更新,删除和放大不适用于选择。

请您指导我可以选择的所有选项。

2 个答案:

答案 0 :(得分:1)

无法在一条消息中执行多个检索调用。您找到的执行多条消息仅用于处理不读取它们的记录。可以将实体连接在一起,但我不确定它会对您有所帮助。

另一种选择是直接从SQL数据库中读取,如果您使用过滤后的视图,则支持此选项。这通常会更快

答案 1 :(得分:1)

Kevin希望通过单个WCF调用从多个实体中检索,这大概是正确的。你可能做的最好的事情就是将一些实体加在一起。

如果你主要担心速度,那么比WCF调用的数量更多,你可以多线程。您只需要确保每个线程都有一个单独的IOrganizationService,并且您已经增加了与远程计算机的最大连接数:

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

另一方面,如果您真正担心WCF调用的数量,可以将所有代码放在插件或工作流程中。一旦您处于插件或工作流的上下文中,通过IOrganizationService对CRM的任何调用都不会使用WCF调用,因为它已经在服务器上。这会给您的CRM服务器增加大量处理开销,所以请注意。