我有一个Microsoft Dynamics CRM 2011插件,在我更新学生实体时会触发。
每个学生记录都绑定到联系人记录。基于名字,姓氏和电子邮件地址。因此,在更新时更改其中一个字段时,必须创建新的联系人记录以匹配学生。
然后,在学生表单上,必须在联系人查询字段中自动填写此新联系人。
我已经编写了代码来执行此操作,但是当我尝试service.Update(entity)时,它失败了。
感谢您的帮助!
答案 0 :(得分:3)
您已注册此插件以在Student实体的Update事件上执行,对吗?然后,您获得的异常可能是对无限循环的抱怨...因为您正在触发更新中的另一个更新。您的service.update调用将重新启动给定记录上的更新管道。
如果单击出现CRM的错误对话框中的“下载日志文件”链接,请检查消息和InnerFault字段以查看是否包含其他更多信息。
CRM在插件调用期间跟踪调用堆栈深度,如果超出深度限制,将抛出“无限循环”错误。 (请参阅文章here和here。)
如果您必须在更新期间更新当前记录,则有几种解决方法:要么检查插件开头的调用堆栈深度,如果超出预期值则不执行任何操作(不是理想的解决方案,但确实如此)工作),或相应地检查预期属性和代码的当前(或缺席)。例如,在您的方案中,您可以将preMessageImage对象中的ave_contactid属性与postMessageImage对象进行比较。如果此字段正在更改,请不要在插件中再次更改。