zoukankan      html  css  js  c++  java
  • D365 FO 对Duty扩展导致同步数据库失败

    同步数据库,报错
     Microsoft.Dynamics.AX.Metadata.Storage.MetadataReadCorruptDataException: Microsoft.Dynamics.AX.Metadata.Storage.MetadataReadCorruptDataException: Error occured while applying extensions for metadata 'SalesQuotationToSalesOrderProcessEnable' of type 'AxSecurityDuty'. ---> Microsoft.Dynamics.AX.Metadata.Core.Exceptions.DuplicateNamedObjectException: Element named: 'TestTableMaintain' of type 'AxSecurityPrivilegeReference' already exists among elements。
    报错的原因是对SalesQuotationToSalesOrderProcessEnable这个系统的Duty进行了两次扩展,这个系统是允许的,然后在两次不同的扩展里都包含了TestTableMaintain这个Privilege,这个编译期也是不报错的。
    但是同步数据库的时候,权限的设置数据是在数据库相关表里存储的,这样设置违反了数据库的PK约束,于是报错了。
    所以扩展系统的权限相关的数据的时候一定要注意,如果一个项目里一定要扩展两次(通常没必要这么做),不要把相同的权限项拖到针对同一个系统对象的不同的扩展里。
    同步报错给的建议有点误导人
     Database synchronization failed. You may have to do a full build of the package 'TestSolution' and all of its dependent packages.
    它让把model编译一下,其实整个model编译也解决不了这个冲突,唯一的解决办法是,找到提示中报错的Duty,把其中一个扩展里的安全项删掉。
    当然正常一个model里应该只会扩展一次,所以很少会遇到这个问题。
    按照目前D365 FO的逻辑,针对同一个系统对象做两次扩展,结果都是随机的,在不同扩展同一个类的同一个方法两次,这个是支持的,但是Coc执行的顺序是随机的,结果当然也是随机的。
    所以还是避免针对同一个系统对象扩展两次的情况出现。

  • 相关阅读:
    88. Merge Sorted Array
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    83. Remove Duplicates from Sorted List
    82. Remove Duplicates from Sorted List II
    81. Search in Rotated Sorted Array II
    80. Remove Duplicates from Sorted Array II
    计算几何——点线关系(叉积)poj2318
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/12963297.html
Copyright © 2011-2022 走看看