0

我创建了一个插件来在另一条记录上的字段更改时创建新记录。我已经全部设置好了,但是当我运行它时,没有创建任何记录,并且 CRM 返回 SQL 超时错误。我的代码如下:

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

4 回答 4

2

将为您提供更清晰的解决方案

于 2012-09-14T09:35:20.223 回答
0

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

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

感谢大家对此的帮助

于 2012-09-14T13:00:21.107 回答
0

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

于 2012-09-14T08:46:16.447 回答
0

这是有道理的,任何异常都会出现,Service.Create(...因为这是代码尝试访问 CRM(以及基础 SQL 表)的点。

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

于 2012-09-14T09:19:46.103 回答