Dynamics 365 (Dynamics CRM) 削除動作の伝播設定
みなさん、こんにちは。
伝播の設定について本ブログで書きましたが、まだ何となくのイメージしかつかめていないという意見をいただきましたので、もう少し動作を見ていただこうと思います。
共有や割り当ての伝播の設定については、関連レコードにも共有(割り当て)を行うか行わないかというだけなので、みなさん理解は大丈夫ですよね。
また、リペアレントに関しては、先日投稿した記事の通りの動きとなります。
そこで、今回は、削除動作の伝播の設定についてみていきたいと思います。
削除の伝播設定
削除動作に対して設定可能な伝播の設定範囲は、以下の通りです。
- すべてのレコードに伝播
- 関連付けの解除
- 制限する
削除の伝播の設定動作
それでは、それぞれの設定がどのように動作をするのか見ていきます。
以下は、今回の検証に使用するエンティティの構成です。
親エンティティとしてParentエンティティが存在し、1:Nの子エンティティとしてChildが存在しています。
また、レコードは、以下のようにParentにChildが2件紐づいている構成です。
今回は、こちらの構成で検証を進めていきます。
すべてのレコードに伝播の動作
まず、「すべてのレコードに伝播」の動作です。
ParentエンティティとChildエンティティの削除動作の伝播を「すべてのレコードに伝播」に設定します。
次のようにParentレコードに2件のChildレコードが紐づいていることを高度な検索から確認します。
Parentレコードを削除します。
Parentレコード削除後、高度な検索でChildレコードを確認すると先ほど2件あったChildレコードも削除されていることが分かります。
このように削除動作の伝播に「すべてのレコードに伝播」を設定すると親エンティティのレコードが削除された際に紐づいている子レコードも削除されます。
関連付けの解除の動作
次に「関連付けの解除」の動作です。
ParentエンティティとChildエンティティの削除動作の伝播に「関連付けの解除」を設定します。
次のようにParentレコードに2件のChildレコードが紐づいていることを高度な検索から確認します。
Parentレコードを削除します。
Parentレコード削除後、高度な検索でChildレコードを確認すると先ほど2件あったChildレコードのParentフィールドの値がクリアされていることが分かります。
このように削除動作の伝播に「関連付けの解除」を設定すると親エンティティのレコードが削除された際に紐づいている子レコードの検索フィールドの値がクリアされます。
制限するの動作
最後に「制限する」の動作です。
ParentエンティティとChildエンティティの削除動作の伝播に「制限する」を設定します。
次のようにParentレコードに2件のChildレコードが紐づいていることを高度な検索から確認します。
Parentレコードを削除します。
Parentレコードの削除時にエラーが発生し、削除できないことが分かります。
このように削除動作の伝播に「制限する」を設定すると親エンティティのレコードに紐づいているレコードがある場合、削除できない状態になります。
以上のように、削除動作の伝播の設定により、親レコードの削除時に子レコードに対して様々な動作をさせることができます。
今回は2階層で確認を進めましたが、3階層以上でも応用させて使うことが可能です。
ヘッダーレコードと明細レコードがある場合など削除動作に関しても伝播の設定を正しく設定することにより、削除機能や制御処理を作り込むことが不要になることも多くあります。
組み合わせると難しいと感じれられるかもしれませんが、便利な機能です。
ぜひ使いこなしてもらえればと思います。