Dynamics crm 2011 Dynamics CRM 2011,在一次呼叫中选择多个实体

Dynamics crm 2011 Dynamics CRM 2011,在一次呼叫中选择多个实体,dynamics-crm-2011,Dynamics Crm 2011,我正在使用Microsoft.Xrm.Sdk(CRM web服务)开发一个应用程序,该应用程序将分别从CRM实体获取所有主数据。 问题是,目前我们分别调用所有实体,这使得WCF调用搜索时间变长 我正在尝试实现这个解决方案,在这个解决方案中,我将一次性调用不同的实体,这样在一个WCF调用中我就拥有了所有的主数据 因此,Sql等价物将从Entity1中选择x;从Entity2中选择y 我使用QueryExpression&然后调用RetrieveMultiple(query)方法 我发现,这表示我可

我正在使用Microsoft.Xrm.Sdk(CRM web服务)开发一个应用程序,该应用程序将分别从CRM实体获取所有主数据。 问题是,目前我们分别调用所有实体,这使得WCF调用搜索时间变长

我正在尝试实现这个解决方案,在这个解决方案中,我将一次性调用不同的实体,这样在一个WCF调用中我就拥有了所有的主数据

因此,Sql等价物将从Entity1中选择x;从Entity2中选择y

我使用QueryExpression&然后调用RetrieveMultiple(query)方法

我发现,这表示我可以使用多个请求,但我还发现它用于创建、更新、删除&而不是用于选择


您能告诉我我可以选择什么选项吗。

在一条消息中执行多个检索调用是不可能的。您发现的execute multiple消息仅用于对记录执行操作,而不是读取它们。将实体连接在一起是可能的,但我不确定这是否会对您有所帮助


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

Kevin基本上是正确的,因为他希望通过一个WCF调用从多个实体中检索。您可能最好将一些实体连接在一起

如果您主要担心的是速度,而不是WCF调用的数量,那么您可以多线程进行。您只需确保每个线程都有一个单独的
ioOrganizationService
,并且增加了到远程计算机的最大连接数:

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


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

如果是2013年,您如何看待创建一个返回多个不同实体集合的新操作?@Bvrce有趣的想法。。。我没有这方面的经验。据我所知,动作应该通过工作流组合多个动作。只要工作流能够填充响应集合,那么是的,它应该可以工作。