Dynamics crm 2011 如何在多对多相交表上添加CRM插件步骤?
我在Opportunity和定制实体之间创建了一种(多对多)关系。 CRM会自动断开与称为“相交表”的内置表的关系 在插件注册工具中,我想在此特定表上添加创建/更新/删除消息。但问题是它并不存在——甚至多对多系统关系也不存在Dynamics crm 2011 如何在多对多相交表上添加CRM插件步骤?,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我在Opportunity和定制实体之间创建了一种(多对多)关系。 CRM会自动断开与称为“相交表”的内置表的关系 在插件注册工具中,我想在此特定表上添加创建/更新/删除消息。但问题是它并不存在——甚至多对多系统关系也不存在 人们可能会建议我手动中断关系,以便显示在注册工具中。但是有什么解决方案可以访问这个内置表吗?不幸的是,答案是否定的。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也有自己的看法。他几乎说了同样的话