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

Dynamics crm 如何以编程方式删除实体及其依赖项?,dynamics-crm,microsoft-dynamics,dynamics-crm-2015,Dynamics Crm,Microsoft Dynamics,Dynamics Crm 2015,我的客户要求我以编程方式删除自定义实体及其依赖项(这会阻止删除此实体) 我已使用RetrievedPendenciesForDeleteRequest检索了自定义实体的依赖项。此请求为我提供了依赖项集合,必须在删除该自定义实体之前将其删除 RetrieveDependenciesForDeleteResponse resp = (RetrieveDependenciesForDeleteResponse) service.E

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

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

                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


有人能帮我实现这个功能吗?

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


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

您是要删除所有依赖项还是只删除依赖项?例如,如果要删除的实体具有一个关系,其中该实体用作另一个实体表单上的查找,而该表单是依赖项,则必须在删除该实体之前解析该关系。假设您不想删除该实体或实体的表单(只是表单上的查找控件-顺便说一句,这需要发布)。如果您知道没有此类依赖项(表单、视图、仪表板等),您可能会没事-如果不想,则很难在代码中实现。因此,为什么MSFT没有处理它呢?实际上,我们已经删除了这个自定义实体的所有已知依赖项(关系、插件、视图等等)。。但当我们试图从UI中删除此实体时。。它显示弹出消息,并表示仍然存在一些依赖项。。现在我们无法从UI中找到这些依赖项。。因此,我们考虑通过编程方式删除它。从UI。。它说有一些“SDK消息处理步骤”类型的依赖项。。。但正如我提到的,我们找不到它。这些将是插件步骤注册。您可以通过UI查看它们,也可以启动PluginRegistrationTool.exe来删除它们。是的。我已经用PluginregistrationTool注销了所有插件(插件步骤)。。但仍然遇到这个奇怪的问题。如何迭代依赖关系?无法使用依赖项,因为依赖项不是类,但MS示例在使用var时使用了这种方法。var为我提供了logicalname依赖项,并且没有填充任何属性。奇怪。