Что из этого лучше и быстрее? - PullRequest
0 голосов
/ 14 декабря 2018

Что касается производительности, какой из них является «лучшим» и самым быстрым?

Есть ли ситуация, когда нам не следует использовать ни один из них или даже использовать только один из них?В конце концов, все играют одинаковую роль.

  • RecordInsertList
  • insert_recordset
  • UnitOfWork

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();

1 Ответ

0 голосов
/ 14 декабря 2018

insert_recordset быстрее (но также более ограничен по функциональности), чем RecordInsertList (см. Оптимизация вставок записи ).UnitOfWork больше относится к целостности данных, чем к производительности (см. Как: использовать класс UnitOfWork для управления транзакциями базы данных ).У меня нет информации, как его производительность сравнивается. AX 2012 Серия Performance UnitOfWork, часть 5 , кажется, покрывает это, но больше не доступна.Я полагаю, что быстрое тестовое задание, похожее на то, что описывает Вставка производительности AX против RecordInsertList , должно дать некоторые подсказки.

Это относится к «самым быстрым».«Лучший» - это совсем другой вопрос, и без дополнительной информации о вашей ситуации я не могу ответить на него объективно.

Лично я говорю с insert_recordset, когда это возможно, и RecordInsertList, если нет.У меня никогда не было причин использовать UnitOfWork.

...