【问题标题】:CRM - SuppressDuplicateDetection for custom entityCRM - 自定义实体的 SuppressDuplicateDetection
【发布时间】:2020-04-06 10:40:14
【问题描述】:

我的 mvc 应用程序正在更新 CRM 动态 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);

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

【问题讨论】:

  • 您是否有此自定义实体的重复检测规则?什么错误?

标签: c# asp.net-mvc dynamics-crm crm


【解决方案1】:

如果要设置请求参数,则应使用专用请求。在您的情况下,它将是 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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多