gpt4 book ai didi

dynamics-crm - xrm sdk 带有回滚的 ExecuteMultipleRequest 事务

转载 作者:行者123 更新时间:2023-12-05 02:19:16 31 4
gpt4 key购买 nike

我有大量记录需要添加到我的 CRM 数据库中。

我正在使用以下代码:

var emRequest = new ExecuteMultipleRequest {
Requests = entityCreateRequests,
Settings = new ExecuteMultipleSettings
{
ContinueOnError = true,
ReturnResponses = true
}
};
var createResponse = (ExecuteMultipleResponse)serviceProxy.Execute(emRequest);

由于记录数量较多,我必须将 entityCreateRequests 的总数拆分为 500 个批处理。现在我知道,如果 500 个批处理中的一个失败,则整个批处理失败了,这对我有好处。但是,我想为我的所有记录做一个交易,即使我必须一个一个地做。类似于 Entity Framework 中的事务,如下所示:

serviceProxy.begin();
for (i =0 ; i<totalTrans; i++) {
try {
var createResponse = (ExecuteMultipleResponse)serviceProxy.Execute(emRequest);
}
catch(e) {
serviceProxy.rollback();
break;
}
serviceProxy.commit();
}

非常感谢任何反馈。

最佳答案

您可以(并且可能应该)使用未绑定(bind)的 Action 来处理创建。例如,您可以有一个将 EntityCollection 作为输入参数的操作“CreateMultipleAccounts”。

在此操作中,您需要一个循环访问 EntityCollection 并创建记录的工作流程序集。您也可以在此工作流程序集中简单地执行 ExecuteMultipleRequest。

这样做的最大好处是操作作为单个事务执行,这意味着如果创建/更新失败,整个过程将回滚。

确保您选中了当然的启用回滚复选框。

编辑:Aileen Gusni 的一篇博文描述了这个实际场景和她的测试结果,您可以在 https://community.dynamics.com/crm/b/misscrm360exploration/archive/2015/07/05/utilizing-crm-custom-action-for-transaction-rollback-purposes 找到它。 .

关于dynamics-crm - xrm sdk 带有回滚的 ExecuteMultipleRequest 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218908/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com