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()部分になるところです。

誰かが私に何をチェックするべきかについてのいくつかのヒントを教えてもらえますか?それで私はこれが起こっている理由を見つけることができますか?


アップデート:

私は問題を見つけました、そしてグレッグはそれが私が上に投稿したコードの外の問題であったことは正しかったです。問題は、「リンクされた」変数の1つを設定する方法でした。フェッチ要求を使用して、リンクする必要のあるレコードのGuidを取得しようとしました。そこから、entityreferenceを設定していました。

私が犯した間違いは、フェッチがGuidを返すのに対し、実際にはエンティティ参照自体を返すと考えていたことです。それで、私がそれを修正すると、コードはほとんどすぐに実行されました。私の推測では、設定が間違っていたため、エンティティの作成時にCRM / SQL Serverが値を入力できたため、エラーが返されました。

これでみんなの助けてくれてありがとう

4

4 に答える 4

2

これにより、より明確で解決策が得られます

于 2012-09-14T09:35:20.223 に答える
0

この問題は、CRMインスタンスの1つでSandboxにプラグインを登録したときに発生しました。これは、グッドプラクティスとして実行する必要があります。ただし、プラグインを非サンドボックスモードで登録してみてください。レコードを作成してみるよりも、問題が解決する可能性があります。

于 2012-09-14T08:46:16.447 に答える
0

Service.Create(...これは、コードがCRM(したがって、基になるSQLテーブル)にアクセスしようとするポイントであるため、例外が発生することは理にかなっています。

このプロセス中にトリガーされる可能性のある他のプラグインが登録されている可能性はありますか?オンプレミスまたはオンラインで実行していますか?

于 2012-09-14T09:19:46.103 に答える
0

私は問題を見つけました、そしてグレッグはそれが私が上に投稿したコードの外の問題であったことは正しかったです。問題は、「リンクされた」変数の1つを設定する方法でした。フェッチ要求を使用して、リンクする必要のあるレコードのGuidを取得しようとしました。そこから、entityreferenceを設定していました。

私が犯した間違いは、フェッチがGuidを返すのに対し、実際にはエンティティ参照自体を返すと考えていたことです。それで、私がそれを修正すると、コードはほとんどすぐに実行されました。私の推測では、設定が間違っていたため、エンティティの作成時にCRM / SQL Serverが値を入力できたため、エラーが返されました。

これでみんなの助けてくれてありがとう

于 2012-09-14T13:00:21.107 に答える