是否可以像在 Crm 4 中那样进行异步调用
crmService.UpdateAsync(card, Guid.NewGuid());
在 CRM 2011 中???
我必须在 SSIS 的帮助下在 CRM 和某些系统之间进行同步。在目标脚本组件中,我想使用异步调用,但我不想自己编写异步调用。
谢谢!!!
是否可以像在 Crm 4 中那样进行异步调用
crmService.UpdateAsync(card, Guid.NewGuid());
在 CRM 2011 中???
我必须在 SSIS 的帮助下在 CRM 和某些系统之间进行同步。在目标脚本组件中,我想使用异步调用,但我不想自己编写异步调用。
谢谢!!!
我主要使用 CRM 2011(而不是 CRM 4),但听起来您将要部署一个插件。如果没有,请立即停止阅读。:)
如果是,您可以在 PRT 中注册插件时将调用类型设置为异步。只需单击该选项。
你还有另一个选择。如果您正在运行最新的 .NET 框架,则有一个新关键字 - async 异步执行该方法。如果您的目标是较旧的 .NET 版本,请不要绝望 - 我使用线程进行了长时间的更新,而且效果也很好。
这可能是这个问题的答案,但只有在 CRM 2011 UR 12 中才有可能
#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);
}
来自 MSDN 的代码