2011-07-07 12 views
0

学生エンティティの更新時に発生するMicrosoft Dynamics CRM 2011のプラグインがあります。CRM 2011 - 更新プラグインのエラー

すべての生徒記録は連絡先レコードにバインドされています。ファーストネーム、ラストネーム、Eメールアドレスに基づいています。したがって、これらのフィールドの1つが更新時に変更された場合、生徒に合わせて新しい連絡先レコードを作成する必要があります。

学生用フォームでは、この新しい連絡先を連絡先の検索フィールドで自動入力する必要があります。

私はこれを行うコードを書いていますが、私はservice.Update(エンティティ)を試してみると失敗します。

ありがとうございました!

+0

これは...で失敗しますか? – ccellar

+0

"service.Update(entity)"という行はFaultExceptionをスローします。 msgstr "プラグインでエラーが発生しました" msgid。その行の前にすべてがうまくいきます... – ThdK

+0

try/catchをコメントアウトすると、スローされている "本当の"エラーが表示されます... –

答えて

3

StudentエンティティのUpdateイベントで実行するようにこのプラグインを登録しましたか?次に、無限ループに関する苦情が出る可能性があります... あなたのアップデート内で別のアップデートが発生している。 service.updateコールは、指定されたレコードの更新パイプラインをもう一度開始します。

CRMがポップアップしているエラーダイアログボックスの[ダウンロードログファイル]リンクをクリックすると、メッセージとInnerFaultフィールドをチェックして、追加情報が含まれているかどうかを確認します。

CRMは、プラグインコール中にコールスタックの深さを追跡し、深さ制限を超えた場合、「無限ループ」フォルトをスローします。 (記事herehereを参照してください。)

アップデート中に現在のレコードを更新する必要がある場合は、回避策のカップルがあります:あなたのプラグインの開始時にコールスタックの深さをチェックし、それが上の予想だ場合は何もしないのいずれか(理想的な解決策ではなく動作します)、それに応じて期待される属性とコードの現在(または不在)をチェックします。たとえば、シナリオでは、preMessageImageオブジェクトのave_contactid属性とpostMessageImageオブジェクトを比較できます。このフィールドが変更の過程にある場合は、プラグインで再度変更しないでください。

+0

Hmm ok。では、preとpostimageのidが異なる場合、またはidが同じ場合はupdateメソッドを呼び出しますか? – ThdK

+1

フィールドが変更されている場合は、プレイメージとポストイメージの値が異なります。この場合、コード内でIDを再度変更する必要はないため、更新プログラムを呼び出さないでください。 –

+0

オクラホマ、私はそれを得る!私はできるだけ早く試してみる:)ありがとう! – ThdK

関連する問題