插件没有创建新记录,但是给SQL超时

时间:2012-09-14 08:12:09

标签: dynamics-crm-2011

我创建了一个插件,用于在另一条记录上更改字段时创建新记录。我把它全部设置好但是当我运行它时没有创建记录而CRM返回SQL Timeout错误。我的代码如下:

Entity contactSecurityRole = new Entity("sb_contactsecurityrole");
                                contactSecurityRole["sb_contactid"] = linkedContact;
                                contactSecurityRole["sb_contactportalsettingid"] = linkedContactPortalSetting;
                                contactSecurityRole["sb_portalsettingid"] = linkedPortalSetting;
                                contactSecurityRole["sb_portalsecurityroleid"] = linkedSecurityRole;

                                Service.Create(contactSecurityRole);

名称以“链接”开头的所有变量都是对其他实体的实体引用,因为记录由查找字段组成。我做了一些检查,停止的地方是实际的Service.Create()部分。

有人可以给我一些关于检查内容的提示,这样我就能找到为什么会发生这种情况吗?


更新

我发现了这个问题,Greg是对的,这是我上面发布的代码之外的问题。问题是我如何设置我的一个“链接”变量,我试图使用获取请求来检索我需要链接到的记录的Guid,我从中设置了一个实体参考。

我犯的错误是认为fetch返回了Guid,而实际上它返回了一个实体引用本身。因此,一旦我修复了代码几乎立即运行。我的猜测是,因为我设置错了,当创建实体时,CRM / SQL Server可以输入值,以便返回错误。

感谢大家对此的帮助

4 个答案:

答案 0 :(得分:2)

This将为您提供更多清晰度和解决方案

答案 1 :(得分:0)

当我在我的一个CRM实例中注册Sandbox中的插件时,我遇到了这个问题,你应该这样做,这是一个很好的做法。但是尝试在非沙盒模式下注册插件,而不是尝试创建记录,它可能会解决您的问题。

答案 2 :(得分:0)

有意义的是,Service.Create(...部分会出现任何异常,因为这是代码尝试访问CRM(以及底层SQL表)的时间点。

是否有可能在此过程中注册了其他可能被触发的插件?您是在本地还是在线运行?

答案 3 :(得分:0)

我发现了这个问题,Greg是对的,这是我上面发布的代码之外的问题。问题是我如何设置我的一个“链接”变量,我试图使用获取请求来检索我需要链接到的记录的Guid,我从中设置了一个实体参考。

我犯的错误是认为fetch返回了Guid,而实际上它返回了一个实体引用本身。因此,一旦我修复了代码几乎立即运行。我的猜测是,因为我设置错了,当创建实体时,CRM / SQL Server可以输入值,以便返回错误。

感谢大家对此的帮助