Dynamics CRM SDK:批量更新实体中的特定字段

404

我是Dynamics CRM开发的新手。我想使用Dynamics CRM Online中的批量更新方法批量更新实体中的某些字段。我正在使用以下代码执行批量更新:

var multipleRequest = new ExecuteMultipleRequest()
{
    Settings = new ExecuteMultipleSettings()
    {
        ContinueOnError = false,
        ReturnResponses = true
    },
    Requests = new OrganizationRequestCollection()
};

foreach (var entity in entities.Entities)
{
    UpdateRequest updateRequest = new UpdateRequest { Target = entity };
    multipleRequest.Requests.Add(updateRequest);
}

ExecuteMultipleResponse multipleResponse = (ExecuteMultipleResponse)service.Execute(multipleRequest);

如何仅指定要更新的字段而不是整个实体进行更新?

注意:我有大约200,000条记录要使用上面的代码进行更新。当前,更新单批1000条记录大约需要1.5分钟。因此,正在考虑一种仅更新必填字段的方法。

阿伦·维诺斯(Arun Vinoth)

您必须查看如何entities填充EntityCollection 如果使用RetrieveMultiple进行检索,则拉取最小字段可能是默认情况下的本机Name字段和PK Id字段。这样,不是整个实体都会被更新回来。

避免使用AllColumns = true使用ColumnSet获得验证所需的最少字段。

ColumnSet = new ColumnSet("field_needed"),

接下来,仅分配必要的字段,例如在内部循环下面。

foreach (var entity in entities.Entities)
    {
        UpdateRequest updateRequest = new UpdateRequest { Target = entity };

        entity.Attributes["field_to_update"] = "field_value";

        multipleRequest.Requests.Add(updateRequest);
    }

我的回答将帮助您了解问题所在并进行纠正。如Nicknow所说,您可以分配新的实体来解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章