【问题标题】:Use DAC from One Customization Project in Another Customization Project in Acumatica在 Acumatica 的另一个定制项目中使用一个定制项目中的 DAC
【发布时间】:2021-06-23 06:57:19
【问题描述】:

我在 Acumatica 2020R2 中有两个自定义项目。我需要从另一个定制项目中的一个定制项目中引用一个 DAC。具有其中一个自定义项目的 Acumatica 实例可能会或可能不会同时发布两个自定义项目。

例如,一个定制项目中的图表可能需要引用在另一个定制项目中创建的 VendorRebate DAC,以在设置价格之前检查客户是否对特定库存项目有回扣。

  • 有没有一种方法可以引用 DAC,而不必在两个自定义项目中都包含 DAC?
  • 另外,有没有办法检查 Acumatica 实例是否发布了必要的定制项目(除了使用条件编译)?

【问题讨论】:

  • 也许其他人有解决方案,但是... 如果 DAC 位于未发布的项目中,您希望如何访问它?在实例中发布项目后,数据库将包含表和字段。如果没有发布项目来定义如何访问这些表/字段,您将需要在新项目中定义 DAC。有一些方法可以在 Visual Studio 中引用另一个 DLL,但是您的项目可能会面临由另一个项目管理的真实 DLL 的过时副本的风险。此外,如果您以不同的方式定义 DAC,最终可能会导致数据损坏。
  • 好的。我将 DAC 放入两个项目中,并且正在考虑引用 DLL。我想我会看看在 Acumatica 中是否有更好的方法来实现这一点,但我想我只需要记住在两个项目中更新 DAC 时,只要我在一个项目中进行更改即可。
  • 就我个人而言,我会制作一个包含绝对基础代码的基础项目,例如这个 DAC。然后,每个分层的项目都可以访问它。我怀疑有一种方法可以做你正在尝试的事情,但我最担心的是数据损坏导致同一个表的不同定义。
  • 我的另一个选择是结合定制项目并为不同的功能设置许可,但这是我试图避免的。我认为我唯一的其他选择是非常小心地保持 DAC 的定义同步。

标签: customization acumatica data-access


【解决方案1】:

有没有一种方法可以引用 DAC 而不必在两个自定义项目中都包含 DAC?

首先,如果项目要一起发布,则绝不应创建重复的 DAC 定义。这可能会导致运行时崩溃。 DAC是否相同并不重要。 Acumatica Framework 将无法在所有场景中正确解决相同类型的冲突。这通常会导致错误无法将 X 类型的对象转换为 Y 类型的对象。

另外,有没有办法检查 Acumatica 实例是否发布了必要的定制项目(除了使用条件编译)?

使用自定义发布菜单中的“验证自定义项目”操作。除非您动态加载 DLL 引用,否则您将无法发布。

具有其中一个自定义项目的 Acumatica 实例可能会或可能不会同时发布两个自定义项目。

要引用一个类型,它必须被发布,否则它就是不可访问的。

您的用例最常见的选项是创建包含共享类型的第三个自定义项目/DLL。

否则,您可以尝试使用 IsActive 属性有条件地停用功能。

DAC IsActive 参考: https://help-2021r1.acumatica.com/Help?ScreenId=ShowWiki&pageid=9ca4cca5-a46c-4dda-af09-8cb8b0793c34

Graph IsActive 参考: https://help-2021r1.acumatica.com/Help?ScreenId=ShowWiki&pageid=cd70b408-b389-4bd8-8502-3d9c12b11112

要仅在引用类型存在时加载它,您需要先将其放入 DLL 并在运行时动态加载此 DLL:https://stackoverflow.com/a/18362459/7376238

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    相关资源
    最近更新 更多