Anw*_*war 4 dynamics-crm dynamics-crm-2011
我在Opportunity和自定义实体之间创建了一个(多对多)关系.CRM自动打破与称为" 相交表 " 的内置表的关系.
在Plug-in Registeration Tool中,我想在此特定表上添加Create/Update/Delete消息.但问题是它并不存在 - 甚至那里也不存在多对多的系统关系.
人们可能会建议我手动破坏关系,以便在注册工具中显示.但是有没有解决方案来访问这个内置表?
不幸的是,答案是否定的.在CRM涉及多对多表/关系的范例是,他们都可以Association和Disassociation请求,但不为Create,Update或Delete请求.(事实上,Update交叉表上没有真实的 - 新关联只能是(Create=> Associate)或解散(Delete=> Disassociate).)
您可以通过查看AttributeMetadata交叉点实体来验证这一点,并且您将看到实体中的所有属性都包含字段ValidForUpdateAPI并ValidForCreateAPI设置为false.这与常规实体不同,常规实体具有对更新和创建调用有效的混合属性.
为了解决您的问题,您的选择是有限的:
1)根据Association消息注册您的步骤.遗憾的是,此消息无法过滤到特定实体,因此您必须通过此插件过滤在CRM中进行的所有关联请求.该IPluginExecutionContext有一个叫"关系"属性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
}
Run Code Online (Sandbox Code Playgroud)
2)创建一个Opportunity与您的自定义实体有一对多关系的自定义交叉实体(类似于将OpporunityProduct产品与产品联系起来的东西).这里的缺点是这种东西的GUI对于简单的交叉实体来说并不像它那样好.
Gonzalo Ruiz也在MSDN 上有关于此主题的博客.他几乎说了同样的话.
| 归档时间: |
|
| 查看次数: |
3858 次 |
| 最近记录: |