gpt4 book ai didi

dynamics-crm-2011 - CRM 2011 中的 Microsoft.Xrm.Sdk.SaveChangesException

转载 作者:行者123 更新时间:2023-12-03 16:18:12 32 4
gpt4 key购买 nike

我最近开始使用 CRM 2011 中的插件,但我遇到了在创建消息上注册的插件作为后期操作的问题。

当我将创建注册为后期操作时,我希望当我点击插件代码时,实体已经在数据库中创建,我应该能够创建一个相关实体(与新创建的实体相关)外键)在插件中。但是当我创建相关实体并更新它并说 SaveChanges() 时,它给了我一个 Microsoft.Xrm.SaveChangesException “处理此请求时发生错误”

如果我深入到内部异常,它只会指向 OrganizationServiceFault。它显示的堆栈跟踪是:

Server stack trace: at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.Xrm.Sdk.IOrganizationService.Execute(OrganizationRequest request) at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.ExecuteCore(OrganizationRequest request) at Microsoft.Xrm.Sdk.Client.OrganizationServiceContext.Execute(OrganizationRequest request) at Microsoft.Xrm.Sdk.Client.OrganizationServiceContext.SaveChange(OrganizationRequest request, IList`1 results



我只在创建消息上遇到这个问题,如果我对更新或删除执行相同的操作,它工作正常。有没有人遇到过这个问题?请提供一些关于我可以尝试解决此问题的意见。提前致谢!

另外,这是我的插件代码。

当创建 ct_repcode 实体时插件被触发,然后在我的插件中我创建了一个 ct_repcodeMember 实体,它有一个链接到实际 ct_repcode 实体的 ct_repcodeid 字段。
Entity repcodeEntity = _context.InputParameters["Target"] as Entity;                 
Guid repcodeId = repcodeEntity.Id;

//Create a new Ct_repcodemember object
Ct_repcodemember repcodeMember = new Ct_repcodemember();
Guid repCodeMemberId = _service.Create(repcodeMember);

repcodeMember = _serviceContext.Ct_repcodememberSet.Where(a => a.Id == repCodeMemberId).FirstOrDefault();
repcodeMember.ct_repcodeid = new EntityReference { Id = repcodeId };

//Update the object and save the changes in crm
_serviceContext.UpdateObject(repcodeMember);
_serviceContext.SaveChanges(); // --- The timeout error happens here

最佳答案

我以前也遇到过这个问题。我认为问题在于,在 CRM 2011 中,当您仍在数据库事务中时,会发生 Pre 和 Post 操作。

我们解决这个问题的方法是翻转插件以异步运行,因为不需要同步结果。

我不确定您当前的代码结构是否有另一种解决方法。我也没有尝试过,但是考虑到您可以很好地创建实体,您可以创建填充了查找的 repcodeMember 实体吗?是否真的需要进行创建、检索和更新?如果您有一些在创建相关实体时运行的代码,您可以与此插件共享它,这样您就可以直接创建,因为它是给您带来问题的更新。

关于dynamics-crm-2011 - CRM 2011 中的 Microsoft.Xrm.Sdk.SaveChangesException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388761/

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