【问题标题】:Dynamics CRM 2011, Select Multiple entities in single callDynamics CRM 2011,在单个呼叫中选择多个实体
【发布时间】:2014-02-14 21:32:53
【问题描述】:

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

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

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

我正在使用 QueryExpression 然后调用 RetrieveMultiple(query) 方法。

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

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

【问题讨论】:

    标签: dynamics-crm-2011


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      就想要通过单个 WCF 调用从多个实体进行检索而言,Kevin 基本正确。您可能做的最好的事情就是将一些实体连接在一起。

      如果您主要担心速度,而不是 WCF 调用的数量,您可以使用多线程来完成。您只需要确保每个线程有一个单独的IOrganizationService,并且您已经增加了与远程计算机的最大连接数:

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

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

      【讨论】:

      • 如果是 2013 年,您如何看待创建一个返回多个不同实体集合的新操作?
      • @Bvrce 有趣的想法......我没有任何经验。据我所知,动作应该通过工作流组合多个动作。只要工作流能够填充响应集合,那么是的,它应该可以工作。
      猜你喜欢
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2013-01-19
      相关资源
      最近更新 更多