【发布时间】:2013-11-20 17:46:56
【问题描述】:
您好,我创建了一个查询,其中只有 SalesAgreementHeader 作为表。然后我使用向导创建了一个文档 aif webservice。
网络服务工作正常,但更新总是报告“Invalid xml document.”错误。
此错误是由类AxdBaseCreate 中的方法moveToNextElement 引发的。
异常的原因是,
reader.fieldName() = AgreementClassification
和
_expectedElementName = AgreementRelationType.
我该如何解决这个问题?或者有什么好的调试方法吗?
在我只使用SalesAgreementHeader 创建查询之前,我有一个更复杂的查询并且遇到了同样的错误。然后我创建了一个新的并将其缩减为只有SalesAgreementHeader。
更新:
A 尚未解决问题,但我认为问题可能是因为 SalesAgreementHeader 扩展了 AgreementHeader 并且字段 RelationType 在 AOS 中不可见,但如果您直接在 DB 中查看。
更新 2: 这是调用堆栈:
[s] \Classes\AxdBaseCreate\moveToNextElement 9
[s]\Classes\AxdBaseCreate\readSurrogateForeignKeyValue 37
[s]\Classes\AxdBaseCreate\readProperty 14
[s]\Classes\AxdBaseCreate\readProperties 122
[s] \Classes\AxdBaseUpdate\deserializeTopEntity 25
[s]\Classes\AxdBaseUpdate\deserializeDocument 131
[s]\Classes\AxdBaseUpdate\updateDocumentList 42
[s]\Classes\AxdBase\updateList 64
[s]\Classes\AifDocumentService\updateList 34
[s] \Classes\SalesAgreementService\update 4
【问题讨论】:
-
我知道这可能是您已经知道的事情,但是看到堆栈跟踪我想知道这是否是因为存在代理键而不是自然键?
-
我认为我朝着正确的方向迈出了一步。我将生成的类
AxdSalesAgreement中的方法expandSurrogateForeignKeys更改为返回false而不是true。现在我遇到了新的错误,但我希望通过将表AgrremenHaeder添加到查询中来修复它们。 -
expandSurrogateForeignKeys的帮助是:“获取一个值,该值确定代理键引用是否将被目标表的自然键中的字段替换。”在这种情况下,自然键为空。
标签: c# web-services axapta dynamics-ax-2012 aif