假设我有三个数据库表。表1,表2,表3。我为每个Graph1,Graph2和Graph3创建了他们的DAC及其相应的图形。
现在我已经为Graph1创建了一个显示Table1数据的屏幕。但是当用户在此屏幕中单击特定的操作按钮时,我想在表2和表3中保存数据。我想在每个表中插入多个记录。
我不认为在图1中将Tables2和表3添加为数据视图(PXSelect属性)是有意义的,因为它们仅在用户触发Action时使用。
在Acumatica中实现这一目标的推荐方法是什么?例如,我应该使用PXDatabase.Update还是应该创建Graph2和Graph3的实例,在其数据视图上调用update并调用PressSave?此外,是否可以将所有内容都包装在PXTransactionScope中?
答案 0 :(得分:2)
请在下面找到一个代码示例,演示如何从多个BLC实例中保存单个事务中的更改:
public class MyGraph1 : PXGraph<MyGraph1>
{
public PXAction<MyDAC> MultiGraphAction;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "My Magic Action")]
protected virtual void multiGraphAction()
{
using (var ts = new PXTransactionScope())
{
// To save changes made in MyGraph1
Actions.PressSave();
// To save changes in MyGraph2
var myGraph2 = PXGraph.CreateInstance<MyGraph2>();
// Place here data manipulation logic for myGraph2
myGraph2.Actions.PressSave();
// To save changes in MyGraph2
var myGraph3 = PXGraph.CreateInstance<MyGraph3>();
// Place here data manipulation logic for myGraph3
myGraph3.Actions.PressSave();
ts.Complete();
}
}
}