today I want to describe following use case. Quite often it is needed to persist to database one or another DAC class, which is filled by some data.
As usually I see people do this via hard coding of DAC class inside of the Graph. But today I want to share with you a way of persisting DAC class without hardcoding it as a view.
In order to accomplish this, you can use following graph:
public class ImportEntitiesInsertion : PXGraph<ImportEntitiesInsertion>
public string AddView(Type dacType)
var viewName = "_DYNAMIC_" + dacType.GetLongName();
var command = BqlCommand.CreateInstance(typeof(Select<>), dacType);
var newView = new PXView(this, true, command);
After that, in some other place of the code, you can use this graph like this:
var graphForInsertion = PXGraph.CreateInstance<ImportEntitiesInsertion>();
var dacType = typeof(SOOrder);
var viewName = graphForInsertion.AddView(dacType);
for (int i = 0; i < 10; i++)
var newOrd = new SOOrder();
What I especially like about this approach, is that records will be persisted initially in the cache, and only after you'll call Persist, all bunch of records will be persisted to database.