正在开发应用程序,其中来自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,表示我可以使用多个请求,但我发现它还用于创建,更新,删除和放大不适用于选择。
请您指导我可以选择的所有选项。
答案 0 :(得分:1)
无法在一条消息中执行多个检索调用。您找到的执行多条消息仅用于处理不读取它们的记录。可以将实体连接在一起,但我不确定它会对您有所帮助。
另一种选择是直接从SQL数据库中读取,如果您使用过滤后的视图,则支持此选项。这通常会更快
答案 1 :(得分:1)
Kevin希望通过单个WCF调用从多个实体中检索,这大概是正确的。你可能做的最好的事情就是将一些实体加在一起。
如果你主要担心速度,那么比WCF调用的数量更多,你可以多线程。您只需要确保每个线程都有一个单独的IOrganizationService
,并且您已经增加了与远程计算机的最大连接数:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100" />
</connectionManagement>
</system.net>
另一方面,如果您真正担心WCF调用的数量,可以将所有代码放在插件或工作流程中。一旦您处于插件或工作流的上下文中,通过IOrganizationService
对CRM的任何调用都不会使用WCF调用,因为它已经在服务器上。这会给您的CRM服务器增加大量处理开销,所以请注意。