Axapta 通过服务插入与数据库访问
我现在正在处理的代码需要插入一组相关记录来导入外部数据 有一段广泛的代码使用CustCustomerService插入数据,后面是一段较小的代码,使用表记录插入和更新其余的数据。我向我的同事询问了为什么这两种不同的方法,答案是,当他开始时,他听说通过服务更好,但服务不支持他需要的所有更改,因此进行了切换 我自己对此进行了研究,只看到了描述如何使用服务以及不同服务之间差异的信息。但没有任何信息将其与语言数据库访问进行比较 是这样。我为什么要使用服务而不是直接插入和更新记录? 编辑:我必须澄清。对于数据库访问,我的意思是:Axapta 通过服务插入与数据库访问,axapta,dynamics-ax-2012,aif,Axapta,Dynamics Ax 2012,Aif,我现在正在处理的代码需要插入一组相关记录来导入外部数据 有一段广泛的代码使用CustCustomerService插入数据,后面是一段较小的代码,使用表记录插入和更新其余的数据。我向我的同事询问了为什么这两种不同的方法,答案是,当他开始时,他听说通过服务更好,但服务不支持他需要的所有更改,因此进行了切换 我自己对此进行了研究,只看到了描述如何使用服务以及不同服务之间差异的信息。但没有任何信息将其与语言数据库访问进行比较 是这样。我为什么要使用服务而不是直接插入和更新记录? 编辑:我必须澄清。对于
smaServiceObjectTable sob;
sob.clear();
sob.Foo = Bar;
// ...
sob.insert();
因为服务允许您在开箱即用的情况下(至少在理论上)将AX与其他系统集成。如果您直接插入和更新记录,并且希望将其与另一个系统集成,则必须自己实现集成 是的,定制AX服务可能会很痛苦,但根据需求,它可能比完全从头开始编写集成要省力
当然,如果您只是进行导入,而没有集成到另一个系统,那么定制实现可能会更容易。但在这种情况下,我建议您看看数据导入/导出框架(DIXF)。因为服务允许您将AX与其他系统进行开箱即用的集成(至少在理论上是如此)。如果您直接插入和更新记录,并且希望将其与另一个系统集成,则必须自己实现集成 是的,定制AX服务可能会很痛苦,但根据需求,它可能比完全从头开始编写集成要省力
当然,如果您只是进行导入,而没有集成到另一个系统,那么定制实现可能会更容易。但在这种情况下,我建议大家看看数据导入/导出框架(DIXF)。两个主要的技术原因(我可以想到)是:
客户表中
,您可能不记得分配PartyId
,而使用该服务会自动完成此操作。还可能存在其他基础表,这些表在您创建新客户时自动填充数据,该客户将由服务负责
另一个示例是在
InventTable
中创建新项。基础表InventItemInventSetup
、inventTempourchSetup
和InventItemSalesSetup
可能需要在执行InventTable.insert()时忘记创建的记录。这就是为什么在内部使用该服务也更有意义。我能想到的两个主要技术原因是:
业务逻辑
雷西德
AX维护RecId编号序列,因此您永远不应该执行插入操作,更重要的是,使用插入/更新服务可以让您和其他人运行业务逻辑
因此,假设用户决定购买第三方ISV,该ISV在更新/插入记录时与客户进行交互……使用direct SQL时会发生什么情况
如果用户以后想要有一些逻辑呢