Platform API: Introduction of the PXBqlTable Class

Developers frequently use DAC extensions, which give them the ability to extend the standard data access classes (DACs) defined in the application code. The Acumatica Customization Platform associates one or more instances of a DAC extension with the corresponding instance of a standard DAC class.

In previous versions of MYOB Acumatica, the platform implemented this functionality by storing all the DAC extensions in one place in the memory. Although this approach worked well, it also led to the following issues:

  • The memory usage increased over time because of the DAC extensions, causing cleanup problems and memory leaks. This resulted in an increased load on the garbage collector.
  • The DAC extensions were shared during long-running user sessions and thus caused concurrency and data consistency issues.
  • The same DAC instance had multiple instances of its corresponding database table, each containing different data.

In MYOB Acumatica 2024.1, DAC extensions are now stored within the instance of the corresponding DAC class. This approach alleviates the issues listed above. The platform implements this approach by placing the new PXBqlTable class at the top of the hierarchy in each DAC class. This maintains the system information, including cache extensions.

Previously, a developer had to declare a DAC as the following code shows.

public class MyDAC : IBqlTable
{

}

Now a developer must declare a DAC as the following code shows.

public class MyDAC : PXBqlTable, IBqlTable
{

}
Attention: Developers must update all of their existing DAC declarations by extending the PXBqlTable class, as shown in the preceding code examples.