【问题标题】:Add distinctive entity sub components to a Dynamics CRM solution将独特的实体子组件添加到 Dynamics CRM 解决方案
【发布时间】:2017-06-19 06:28:39
【问题描述】:

我正在开发一个实用程序,在该实用程序中,我正在根据提供的目标解决方案创建回滚解决方案。 截至目前,该实用程序运行良好,它读取要部署在目标组织上的解决方案,并在目标组织上创建一个新的回滚解决方案,其中包含来自目标的所有必要组件,如实体、Web 资源、SDK 步骤、安全角色、工作流等组织。 我使用 SDK 的 AddSolutionComponentRequest 类来实现这一点。

当实用程序在解决方案中检测到实体时,它只需添加整个实体以及所有元数据,如所有字段、视图、表单等。

CRM 2016 引入了解决方案细分的功能,通过它我们可以专门添加那些已经改变的实体组件。

我如何在我的实用程序中利用此功能,因为我还没有找到任何 API 方法允许我将特定实体组件添加到解决方案中。

【问题讨论】:

    标签: c# dynamics-crm dynamics-crm-2016 dynamics-crm-365


    【解决方案1】:

    对于实体类型的分段解决方案,必须将DoNotIncludeSubcomponents 选项设置为true 的解决方案添加到解决方案中。然后,可以将实体的独特部分一一添加到解决方案中。

    将实体“account”添加到解决方案“Test”中的示例,只有属性“accountnumber”:

    private static EntityMetadata RetrieveEntity(string entityName, IOrganizationService service)
    {
        var request = new RetrieveEntityRequest
        {
            LogicalName = entityName,
            EntityFilters = EntityFilters.All
        };
    
        return ((RetrieveEntityResponse)service.Execute(request)).EntityMetadata;
    }
    
    private static void AddEntityComponent(Guid componentId, int componentType, string solutionName, IOrganizationService service)
    {
        var request = new AddSolutionComponentRequest
        {
            AddRequiredComponents = false,
            ComponentId = componentId,
            ComponentType = componentType,
            DoNotIncludeSubcomponents = true,
            SolutionUniqueName = solutionName
        };
    
        service.Execute(request);
    }
    
    IOrganizationService service = factory.CreateOrganizationService(null);
    
    EntityMetadata entity = RetrieveEntity("account", service);
    AddEntityComponent(entity.MetadataId.Value, 1, "Test", service);
    AddEntityComponent(entity.Attributes.First(a => a.LogicalName == "accountnumber").MetadataId.Value, 2, "Test", service);
    

    【讨论】:

      【解决方案2】:

      看起来CloneAsPatchRequest 是要走的路。但它依赖于父解决方案。因此,您可能需要先部署父解决方案,然后根据需要部署尽可能多的补丁。

      关于这些细节的更多信息here

      【讨论】:

      • 您的答案涉及补丁解决方案,而不是分段解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多