Dynamics crm 2011 如何在多对多相交表上添加CRM插件步骤?

Dynamics crm 2011 如何在多对多相交表上添加CRM插件步骤?,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我在Opportunity和定制实体之间创建了一种(多对多)关系。 CRM会自动断开与称为“相交表”的内置表的关系 在插件注册工具中,我想在此特定表上添加创建/更新/删除消息。但问题是它并不存在——甚至多对多系统关系也不存在 人们可能会建议我手动中断关系,以便显示在注册工具中。但是有什么解决方案可以访问这个内置表吗?不幸的是,答案是否定的。CRM中关于多对多表/关系的范例是,它们可用于关联和解除关联请求,但不可用于创建,更新,或删除请求。(事实上,交集表上没有真正的更新——新关联只是建立(创建=

我在Opportunity和定制实体之间创建了一种(多对多)关系。 CRM会自动断开与称为“相交表”的内置表的关系

在插件注册工具中,我想在此特定表上添加创建/更新/删除消息。但问题是它并不存在——甚至多对多系统关系也不存在


人们可能会建议我手动中断关系,以便显示在注册工具中。但是有什么解决方案可以访问这个内置表吗?

不幸的是,答案是否定的。CRM中关于多对多表/关系的范例是,它们可用于
关联
解除关联
请求,但不可用于
创建
更新
,或
删除
请求。(事实上,交集表上没有真正的
更新
——新关联只是建立(
创建
=>
关联
)或解除(
删除
=>
解除关联

您可以通过查看交叉点实体的
AttributeMetadata
来验证这一点,您将看到实体中的所有属性的字段
ValidForUpdateAPI
ValidForCreateAPI
都设置为false。这与常规实体不同,常规实体混合了对更新和创建调用有效的属性

为了解决您的问题,您的选择是有限的:

1) 根据
关联
消息注册您的步骤。不幸的是,此消息无法过滤到特定实体,因此您必须过滤通过此插件在CRM中发出的所有关联请求。
IPluginExecutionContext
InputParameters
属性包中有一个名为“Relationship”的属性,可用于筛选出要为其开发代码的关系

关系实体关系=
(关系)context.InputParameters[“关系”];
if(entityRelationship.SchemaName=customIntersectTable.EntityLogicalName)
{
实体引用目标实体=
(EntityReference)context.InputParameters[“Target”];
EntityReferenceCollection relatedEntities=
(EntityReferenceCollection)context.InputParameters[“RelatedEntities”];
//做事
}
2) 创建一个与
Opportunity
和您的自定义实体(类似于
OpportunityProduct
,它将Opportunity与产品链接起来)具有一对多关系的自定义相交实体。这里的缺点是,这种类型的GUI在这方面不如在简单的交集实体上好

冈萨洛·鲁伊斯对MSDN也有自己的看法。他几乎说了同样的话