【问题标题】:Analog of CRM 4 methods CrmService.CreateAsync(UpdateAsync) in CRM 2011CRM 2011 中 CRM 4 方法 CrmService.CreateAsync(UpdateAsync) 的模拟
【发布时间】:2013-01-25 16:07:57
【问题描述】:

是否可以像在 Crm 4 中那样进行异步调用

  crmService.UpdateAsync(card, Guid.NewGuid());

在 CRM 2011 中???

我必须在 SSIS 的帮助下在 CRM 和某些系统之间进行同步。 在目标脚本组件中,我想使用异步调用,但我不想自己编写异步调用。

谢谢!!!

【问题讨论】:

    标签: c# asynchronous ssis dynamics-crm-2011 crm


    【解决方案1】:

    我主要使用 CRM 2011(而不是 CRM 4),但听起来您将要部署一个插件。如果没有,请立即停止阅读。 :)

    如果是,您可以在 PRT 中注册插件时将调用类型设置为异步。只需单击选项即可。

    您还有另一个选择。如果您正在运行最新的 .NET 框架,则有一个新关键字 - async 可以异步执行该方法。如果您的目标是较旧的 .NET 版本,请不要绝望 - 我使用线程进行了长时间的更新,而且效果也很好。

    【讨论】:

      【解决方案2】:

      It 可以回答这个问题,但只有在 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 的代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 2011-08-17
        • 1970-01-01
        • 2011-09-17
        相关资源
        最近更新 更多