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

404*_*404 1 c# dynamics-crm dynamics-crm-online bulkupdate

我是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);
Run Code Online (Sandbox Code Playgroud)

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

注意:我使用上面的代码更新了大约200,000条记录.目前,更新一批1000条记录大约需要1.5分钟.所以正在考虑一种只更新必填字段的方法.

Nic*_*now 7

我推荐的方法是new Entity()为更新创建一个对象.这样,您的更新代码无需担心检索到哪些字段,只需要关注更新的字段.

foreach (var entity in entities.Entities)
{
    var newEntity = new Entity(entity.LogicalName, entity.Id);

    //Populate whatever fields you want (this is just an example)
    newEntity["new_somefield"] = entity.GetAttributeValue<string>("new_somefield").ToUpper();

    UpdateRequest updateRequest = new UpdateRequest { Target = newEntity };
    multipleRequest.Requests.Add(updateRequest);
}
Run Code Online (Sandbox Code Playgroud)