在不删除和重新创建的情况下更改实体架构名称
Change entity schema name without deleting and recreating
我正在与一家供应商合作,在 Microsoft Dynamics 365 CRM 上开发一个新项目,其中包含相当多的自定义功能和自定义实体。供应商对实体名称做出了一些我不同意的假设,我想更改实体名称。我被告知他们可以更改显示名称,但不能更改实际的实体模式名称而不删除它并重新创建它,这将需要大量工作,因为他们需要重新配置所有关系和围绕这些实体的业务规则。
我并不是说他们错了,但令我震惊的是,Microsoft 没有任何重构实体名称的方法。这不是实时应用程序 - 它处于相当早期的开发阶段。我想知道,有什么方法可以在不删除和重新创建它们的情况下更改实体名称?
我的一个想法可能是导出解决方案并手动编辑导出的解决方案;我相信当您导出解决方案时,它会输出一个 zip 文件,然后可以将其导入到单独的环境中——是否可以手动修改该 zip 文件以更改实体架构名称,然后再导入?我不在乎这是否意味着我们会消灭数据。
由于还处于早期阶段,您最好删除并重新创建。破解解决方案 XML 不会更改数据库中的 table 或字段名称。当然,您也许可以通过导出、编辑和重新导入到不同的环境中而逃脱,但重新导出和导入回原始环境并不能解决问题。
您的供应商是正确的,这是不可能的。由于系统定制时生成的依赖项数量,模式名称在创建时被锁定。
虽然您可以尝试手动编辑解决方案文件,但 supported 不行。
Editing a solutions file to edit any solution components other than
ribbons, forms, SiteMap, or saved queries is not supported.
因此,即使你成功了,也可能会有点痛苦,而且你 运行 有可能在以后给自己带来问题。定制直接影响大量元素,包括数据库,并且很难预测确切的结果,因为太多的功能包含在我们无法控制的实现中。如果您 运行 解决这些问题,Microsoft 可能不会提供帮助,因为您将不受支持。
从经验来看,虽然这很烦人,但这是最好离开并继续前进的事情之一。最终用户甚至不知道模式名称的存在,它只对技术人员可见。实体显示名称定期更改,因此找到与显示名称不同的模式名称并不罕见 - 开箱即用的实体就是这样,即事件,kbarticle,transactioncurrency,importmap,template,list,salesorder,bulkoperation to name一些。帐户似乎总是重命名为组织或公司。更改模式名称的好处对于所涉及的工作量和风险来说是如此之小,如果是我,我会把我的时间和精力花在其他地方。
XRM Toolbox Attribute Manager(作者 Daryl LaBar)是一个非常方便的工具,可以“重命名”大多数 Dynamics CRM/Dataverse 属性(除了像选项集这样的复杂属性)。这里的“重命名”是指:
- 使用旧名称和架构创建新属性;
- 将数据从旧属性复制到新属性;
- 删除旧属性。
还有更多的步骤,您可以很好地控制可以选择不使用的步骤。属性管理器的真正优势在于它移动数据,允许您更改生产系统上的实体名称——如果您敢...
Daryl 编写了一个简洁易用的工具。话虽如此,请务必设置一些测试,以便您熟悉它的工作原理。
是的,可以更改实体的逻辑名称,而无需从 UI 中删除和重新创建所有元数据。
但是,您可能需要从一个新的环境开始或重置您现有的环境,因为大量元数据缓存在实例中,并且在导入时会导致冲突。
比如SDK步骤GUIDs删了也会冲突
重命名实体的一般过程如下所示:
- 替换逻辑名
- 替换逻辑id名
- 替换物理id名称
- 替换集名称
- 替换状态和状态代码名称
- 更新关系
- 重命名文件
任何具有高级查找和替换功能的工具都可以,但我个人推荐 IntelliJ Idea,因为它最初会为您的解决方案编制索引,使所有后续操作几乎是即时的。
我正在与一家供应商合作,在 Microsoft Dynamics 365 CRM 上开发一个新项目,其中包含相当多的自定义功能和自定义实体。供应商对实体名称做出了一些我不同意的假设,我想更改实体名称。我被告知他们可以更改显示名称,但不能更改实际的实体模式名称而不删除它并重新创建它,这将需要大量工作,因为他们需要重新配置所有关系和围绕这些实体的业务规则。
我并不是说他们错了,但令我震惊的是,Microsoft 没有任何重构实体名称的方法。这不是实时应用程序 - 它处于相当早期的开发阶段。我想知道,有什么方法可以在不删除和重新创建它们的情况下更改实体名称?
我的一个想法可能是导出解决方案并手动编辑导出的解决方案;我相信当您导出解决方案时,它会输出一个 zip 文件,然后可以将其导入到单独的环境中——是否可以手动修改该 zip 文件以更改实体架构名称,然后再导入?我不在乎这是否意味着我们会消灭数据。
由于还处于早期阶段,您最好删除并重新创建。破解解决方案 XML 不会更改数据库中的 table 或字段名称。当然,您也许可以通过导出、编辑和重新导入到不同的环境中而逃脱,但重新导出和导入回原始环境并不能解决问题。
您的供应商是正确的,这是不可能的。由于系统定制时生成的依赖项数量,模式名称在创建时被锁定。
虽然您可以尝试手动编辑解决方案文件,但 supported 不行。
Editing a solutions file to edit any solution components other than ribbons, forms, SiteMap, or saved queries is not supported.
因此,即使你成功了,也可能会有点痛苦,而且你 运行 有可能在以后给自己带来问题。定制直接影响大量元素,包括数据库,并且很难预测确切的结果,因为太多的功能包含在我们无法控制的实现中。如果您 运行 解决这些问题,Microsoft 可能不会提供帮助,因为您将不受支持。
从经验来看,虽然这很烦人,但这是最好离开并继续前进的事情之一。最终用户甚至不知道模式名称的存在,它只对技术人员可见。实体显示名称定期更改,因此找到与显示名称不同的模式名称并不罕见 - 开箱即用的实体就是这样,即事件,kbarticle,transactioncurrency,importmap,template,list,salesorder,bulkoperation to name一些。帐户似乎总是重命名为组织或公司。更改模式名称的好处对于所涉及的工作量和风险来说是如此之小,如果是我,我会把我的时间和精力花在其他地方。
XRM Toolbox Attribute Manager(作者 Daryl LaBar)是一个非常方便的工具,可以“重命名”大多数 Dynamics CRM/Dataverse 属性(除了像选项集这样的复杂属性)。这里的“重命名”是指:
- 使用旧名称和架构创建新属性;
- 将数据从旧属性复制到新属性;
- 删除旧属性。
还有更多的步骤,您可以很好地控制可以选择不使用的步骤。属性管理器的真正优势在于它移动数据,允许您更改生产系统上的实体名称——如果您敢...
Daryl 编写了一个简洁易用的工具。话虽如此,请务必设置一些测试,以便您熟悉它的工作原理。
是的,可以更改实体的逻辑名称,而无需从 UI 中删除和重新创建所有元数据。
但是,您可能需要从一个新的环境开始或重置您现有的环境,因为大量元数据缓存在实例中,并且在导入时会导致冲突。 比如SDK步骤GUIDs删了也会冲突
重命名实体的一般过程如下所示:
- 替换逻辑名
- 替换逻辑id名
- 替换物理id名称
- 替换集名称
- 替换状态和状态代码名称
- 更新关系
- 重命名文件
任何具有高级查找和替换功能的工具都可以,但我个人推荐 IntelliJ Idea,因为它最初会为您的解决方案编制索引,使所有后续操作几乎是即时的。