残念ながら、答えはノーになります。多対多のテーブル/関係に関するCRMのパラダイムは、それらが要求に対して使用可能Association
であるが、、、または要求に対しては使用できないということです。(実際、交差テーブルには実際の値はありません。新しい関連付けは、作成(=> )または解消(=> )のいずれかでのみ行われます。)Disassociation
Create
Update
Delete
Update
Create
Associate
Delete
Disassociate
交差エンティティのを調べることでこれを確認できAttributeMetadata
ます。エンティティ内のすべての属性にフィールドがValidForUpdateAPI
ありValidForCreateAPI
、falseに設定されていることがわかります。これは、更新と作成の呼び出しに有効な属性が混在している通常のエンティティとは異なります。
あなたの問題を解決するために、あなたの選択肢は限られています:
1)Association
メッセージに対してステップを登録します。残念ながら、このメッセージは特定のエンティティにフィルタリングできないため、このプラグインを介してCRMで行われたすべての関連付けリクエストをフィルタリングする必要があります。にIPluginExecutionContext
は、プロパティバッグに「Relationship」というプロパティがあり、InputParameters
コードを開発する関係を除外するために使用できます。
Relationship entityRelationship =
(Relationship)context.InputParameters["Relationship"];
if (entityRelationship.SchemaName = customIntersectTable.EntityLogicalName)
{
EntityReference targetEntity =
(EntityReference)context.InputParameters["Target"];
EntityReferenceCollection relatedEntities =
(EntityReferenceCollection)context.InputParameters["RelatedEntities"];
//do stuff
}
2)カスタムエンティティと1対多の関係を持つカスタム交差エンティティを作成します(機会と製品をリンクするOpportunity
のようなものに似ています)。OpporunityProduct
ここでの欠点は、この種のGUIは、単純な交差エンティティの場合ほど優れていないことです。
Gonzalo Ruizは、MSDNにもこのトピックに関するブログを持っています。彼はほとんど同じことを言っています。