2014-02-14 113 views
0

上午正在处理来自CRM实体的所有主数据分别使用Microsoft.Xrm.Sdk(CRM Web服务)的应用程序。 问题是,目前我们正在分别调用所有实体,这会使WCF调用搜索时间。Dynamics CRM 2011,在单个调用中选择多个实体

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

所以Sql Equivalent将从Entity1中选择x;从实体2中选择y

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

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

你能指导什么我可以去的所有选项。

回答

1

在一条消息中执行多个检索调用是不可能的。您发现的执行多条消息仅用于处理不记录它们的记录。有可能将实体连接在一起,但我不确定它会对你有所帮助。

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

1

凯文大多是正确的,只要想从一个WCF调用多个实体检索。你可以做的最好的事情就是一起加入一些实体。

如果您主要担心速度问题,比WCF调用数量多,则可以使用多线程。你只需要确保你有一个单独的IOrganizationService每个线程并且您已经连接的最大数目提高到远程机器:

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

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

+0

如果是2013,您认为如何创建一个返回多个不同实体集合的新Action? – Bvrce

+0

@Brrce有趣的想法......我还没有任何经验。据我所知,Actions应该通过工作流程结合多种行动。只要工作流程能够填充响应集合,那么是的,它应该可以工作。 – Daryl