使用 ExecuteMultiple 提高批量数据加载的性能
您可以使用 ExecuteMultipleRequest 消息在 Microsoft Dynamics CRM Online 2016 Update 和 Microsoft Dynamics CRM 2016(本地) 中(尤其在 Internet 延遲可能是最大限制因素的 Microsoft Dynamics CRM Online 中)支持更高吞吐批量消息傳遞方案。ExecuteMultipleRequest 接受消息 Requests 的輸入集合,按消息請求在輸入集合中出現(xiàn)的順序執(zhí)行每個消息請求,還可以返回包含發(fā)生的每個消息的響應(yīng)或錯誤的 Responses 的集合。
示例
// Get a reference to the organization service. using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials)) {// Enable early-bound type support to add/update entity records required for this sample._serviceProxy.EnableProxyTypes();#region Execute Multiple with Results// Create an ExecuteMultipleRequest object.requestWithResults = new ExecuteMultipleRequest(){// Assign settings that define execution behavior: continue on error, return responses. Settings = new ExecuteMultipleSettings(){ContinueOnError = false,ReturnResponses = true},// Create an empty organization request collection.Requests = new OrganizationRequestCollection()};// Create several (local, in memory) entities in a collection. EntityCollection input = GetCollectionOfEntitiesToCreate();// Add a CreateRequest for each entity to the request collection.foreach (var entity in input.Entities){CreateRequest createRequest = new CreateRequest { Target = entity };requestWithResults.Requests.Add(createRequest);}// Execute all the requests in the request collection using a single web method call.ExecuteMultipleResponse responseWithResults =(ExecuteMultipleResponse)_serviceProxy.Execute(requestWithResults);// Display the results returned in the responses.foreach (var responseItem in responseWithResults.Responses){// A valid response.if (responseItem.Response != null)DisplayResponse(requestWithResults.Requests[responseItem.RequestIndex], responseItem.Response);// An error has occurred.else if (responseItem.Fault != null)DisplayFault(requestWithResults.Requests[responseItem.RequestIndex], responseItem.RequestIndex, responseItem.Fault);}ExecuteMultipleRequest 的 Settings 參數(shù)適用于控制執(zhí)行行為和返回結(jié)果的請求集合中的所有請求。我們更詳細(xì)地看一下這些選項。
?
|   ContinueOnError  |   當(dāng)為 true 時,繼續(xù)處理集合中的下一個請求,即使從集合中當(dāng)前請求的處理中返回錯誤。當(dāng)為 false 時,不要繼續(xù)處理下一個請求。  | 
|   ReturnResponses  |   當(dāng)為 true 時,從處理的每個消息請求返回響應(yīng)。當(dāng)為 false 時,不返回響應(yīng)。 如果設(shè)置為 true 且請求不返回一個響應(yīng),由于這是其設(shè)計,因此該請求的 ExecuteMultipleResponseItem 設(shè)置為 空。 不過,即使為 false,如果返回錯誤, Responses 程序集將不為空。如果返回錯誤,則每個已處理請求的集合中將有一個響應(yīng)項返回錯誤,Fault 將設(shè)置為發(fā)生的實際錯誤。  | 
轉(zhuǎn)載于:https://www.cnblogs.com/zhwlxsch/p/6149456.html
總結(jié)
以上是生活随笔為你收集整理的使用 ExecuteMultiple 提高批量数据加载的性能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: C# : 调用C++动态库(dll)
 - 下一篇: Fences中关于Explorer非正常