2010-09-11 3 views
7

Delphi XE dbExpress tutorial в онлайн-документации использует ApplyUpdates (-1):Должен ли я использовать ApplyUpdates (0) или ApplyUpdates (-1)?

// Client data set has provider do update. 
    ClientDataSet1.ApplyUpdates(-1); 

Некоторые интернет-источники, однако говорят, что это будет иметь преимущества использования ApplyUpdates (0), и это было бы распространенной ошибкой или плохая практика использовать -1. Это правда? И когда и почему я должен предпочитать 0 за -1 как значение для MaxErrors?

+0

Удивительно, как использование (обычно не очень хорошо) использования ApplyUpdates (-1) размножается, поскольку ApplyUpdates (0) обычно намного лучше. –

ответ

9

-1 Позволяет сообщать о неограниченных ошибках, поэтому каждое обновление в дельтах ClientDataSet будет проверяться.

0 Не допускается никаких ошибок, а это означает, что при попытке обновления после первого сбоя не тратится никаких усилий.

-1 может быть уместным, если у вас есть много несвязанных изменений для перекачки в базу данных. Например, при откачке назад изменений из автономного использования в модели портфеля. В этом типе сценариев обновления могут завершиться неудачно, потому что записи, в среднем, были обновлены другими пользователями, но при одном отказе обновления мало что может сказать о шансах других сбоев обновления. Тогда было бы, вероятно, более удобно, чтобы каждое обновление проверялось и получало отчет о тех, которые не удалось, поэтому они могут быть адресованы пользователем.

0 вероятно лучше подходит в ситуациях, когда достаточно предсказуемо, что если одно обновление не удастся, все или многие другие обновления в дельта также потерпят неудачу. Было бы «безрассудно», чтобы ClientDataSet попробовал другие обновления, когда вероятность их неудачи также высока. Должен признаться, что мне сложно придумать сценарий, в котором это будет так.

+0

Спасибо за подробный ответ! Одна вещь приходит мне на ум, когда я читаю ее: iirc есть также разница в «откате», а 0 не будет вносить никаких изменений в базу данных, чтобы клиент мог убедиться, что с базой данных ничего плохого не произошло, -1 будет совершить «как можно больше» - или что-то в этом роде. (Я все еще искал онлайн-ресурсы, которые содержали лучшее описание для этой разницы.) – mjn

+0

@mjustin: -1 совершение как можно большего - довольно безопасная ставка. 0 не совершая ничего после неудачи, я менее уверен, но это то, чего я ожидал бы ... :) –