2014-02-14 160 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