关于性能,哪些是“最好的”和最快的?
是否存在我们不应该使用其中任何一种甚至只使用其中一种的情况?毕竟,每个人都扮演着同样的角色。
RecordInsertList
RecordInsertList insertList = new RecordInsertList(tableNum(TableExample));
// some business logic...
insertList.add(buffer1);
insertList.add(buffer2);
insertList.add(buffer3);
insertList.insertDataBase();
insert_recordset
insert_recordset buffer (myNum, mySum)
select myNum, sum(myValue) from otherBuffer
group by myNum
where otherBuffer.myNum == 100;
的UnitOfWork
UnitOfWork uow = new UnitOfWork();
// some business logic...
uow.insertOnSaveChanges(buffer1);
uow.insertOnSaveChanges(buffer2);
uow.insertOnSaveChanges(buffer3);
uow.saveChanges();
insert_recordset
比RecordInsertList
更快(但功能更有限)(见Optimizing Record Inserts)。 UnitOfWork
更多的是数据完整性而不是性能(参见How To: Use the UnitOfWork Class to Manage Database Transactions)。我没有信息它的性能如何比较。 AX 2012 UnitOfWork Performance Series Part 5似乎已经涵盖了这一点,但已不再可用。我想像一个类似于AX Performance Insert vs RecordInsertList描述的快速测试工作应该提供一些提示。
这涵盖“最快”。 “最好”是另一个问题,如果没有关于你情况的进一步信息,我无法客观地回答。
就个人而言,我尽可能使用insert_recordset
和RecordInsertList
,如果没有。我从来没有理由使用UnitOfWork
。