如何以编程方式删除实体及其依赖项?

时间:2015-05-17 17:10:28

标签: dynamics-crm microsoft-dynamics dynamics-crm-2015

我的客户要求我以编程方式删除自定义实体及其依赖项(这会阻止删除此实体)。

我使用 RetrieveDependenciesForDeleteRequest 检索了自定义实体的依赖项。此请求为我提供了依赖项集合,必须在删除该自定义实体之前将其删除。

                RetrieveDependenciesForDeleteResponse resp =
                    (RetrieveDependenciesForDeleteResponse) service.Execute(req);

                //A more complete report requires more code
                foreach (Entity dependencyEntity in resp.EntityCollection.Entities)
                {
                    service.Delete(d.LogicalName, dependencyEntity.Id);
                }

现在我面临的问题是 dependencyEntity.Id 始终为空GUID,而不是有效的GUID。

有人能帮助我如何实现这项功能吗?

1 个答案:

答案 0 :(得分:2)

响应中的Entity项仅用作数据传输对象。它们不是真正的实体。你要找的是名为" dependentcomponentobjectid "的属性。 (这是Guid类型,而不是EntityReference)。属性" dependentcomponenttype " (OptionSetValue)为您提供有关您正在处理的组件类型的线索。

请注意,依赖组件又可以是其他组件所依赖的必需组件。 (例如,工作流依赖于工作流活动,而工作流活动又依赖于插件程序集。)因此,强大的删除工具需要遵循递归策略。