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执行的顺序是随机的,结果当然也是随机的。
    所以还是避免针对同一个系统对象扩展两次的情况出现。

  • 相关阅读:
    Python2.7-math, cmath
    Python2.7-pprint
    Python2.7-copy
    Python2.7-weakref
    Python2.7-Queue
    Python2.7-sched
    Python2.7-array
    Python2.7-bisect
    搜索专题:Balloons
    【洛谷P4460】解锁屏幕【状压dp】
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/12963297.html
Copyright © 2011-2022 走看看