CRM - 自定义实体的 SuppressDuplicateDetection

CRM - SuppressDuplicateDetection for custom entity

我的 mvc 应用程序正在更新 CRM dynamics 2015 中自定义实体的状态。我们有一个插件,当我们更新特定状态时会触发该插件。我们在这里面临并发问题,当两个不同的尝试同时更新实体上的相同状态时,状态会更新两次并且系统会触发插件两次。

我尝试在我的 MVC 代码中使用,但出现错误。好像我不能在自定义实体上使用它

Portal.abcclaim obj= new Portal.abcclaim ();
                obj.Attributes["abcclaimreceiveddate"] = Convert.ToDateTime(DateTime.Now);
                obj.Attributes["abcdateclaimsubmitted"] = Convert.ToDateTime(DateTime.Now);
                obj.Attributes["abcmodifiedbycontact"] = new EntityReference(Portal.Contact.EntityLogicalName, loggedInId);
                obj.Attributes["abcstatus"] = new EntityReference(Portal.abc_status.EntityLogicalName, status);
                obj.Attributes["SuppressDuplicateDetection"] = false;
                obj.Id = objid;
                serviceProxy.Update(obj);

还有其他方法可以解决这个问题吗?

如果你想设置请求参数,你应该使用专用请求。在您的情况下,它将是 UpdateRequest (https://docs.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.messages.updaterequest?view=dynamics-general-ce-9).

var updateRequest = new UpdateRequest()
{
    Target = obj,
};
updateRequest["SuppressDuplicateDetection"] = false;

var response = (UpdateResponse)osvc.Execute(updateRequest);

但看起来重复检测并不能解决并发问题。您应该检查如何使用 ConcurrencyBehavior 参数。您可以在这篇 MS 文档文章中阅读有关 Dynamics 365 中并发性的更多信息:https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/optimistic-concurrency

希望对您有所帮助。