2010-09-11 12 views
7

Die Delphi XE dbExpress tutorial in der Online-Dokumentation verwendet ApplyUpdates (-1):Sollte ich ApplyUpdates (0) oder ApplyUpdates (-1) verwenden?

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

Einige jedoch Online-Quellen sagen, dass es Vorteile haben würde ApplyUpdates nutzen (0), und es wäre ein weit verbreiteter Fehler oder schlechte Praxis sein um -1 zu verwenden. Ist das wahr? Und wann und warum sollte ich 0 über -1 als Wert für MaxErrors bevorzugen?

+0

Es ist erstaunlich, wie die (in der Regel nicht so gute) Verwendung von ApplyUpdates (-1) proliferiert, da ApplyUpdates (0) meist deutlich besser ist. –

Antwort

9

-1 Ermöglicht unbegrenzte Fehler gemeldet werden, so dass jedes Update im Delta des ClientDataSet wird versucht werden.

0 Ermöglicht ohne Fehler überhaupt, was bedeutet, dass keine Anstrengung zu versuchen, Updates nach einem ersten Scheitern verschwendet wird.

-1 könnte sinnvoll sein, wenn Sie viele unabhängige Änderungen an der Datenbank durchpumpen. Zum Beispiel beim Zurückpumpen wechselt die Offline-Nutzung in das Aktenkoffermodell. In dieser Art von Szenario können Aktualisierungen fehlschlagen, da die Datensätze inzwischen von anderen Benutzern aktualisiert wurden. Wenn jedoch ein Update fehlschlägt, wird wenig oder gar nichts über die Wahrscheinlichkeit angezeigt, dass die anderen Updates fehlschlagen. Es wäre dann wahrscheinlich bequemer, jedes Update ausprobiert zu bekommen und einen Bericht über die fehlgeschlagenen zu erhalten, damit sie vom Benutzer angesprochen werden können.

0 wahrscheinlich besser geeignet in Situationen, in denen es ziemlich vorhersehbar ist, dass, wenn ein Update fehlschlägt, alle oder viele der anderen Updates im Delta wird auch scheitern. Es wäre "tollkühn", das ClientDataSet die anderen Updates ausprobieren zu lassen, wenn die Wahrscheinlichkeit, dass sie ausfallen, hoch ist. Ich muss zugeben, dass es mir schwer fällt, mir ein Szenario vorzustellen, in dem dies der Fall sein könnte.

+0

Danke für die ausführliche Antwort! Eines fällt mir ein, wenn ich es lese: Es gibt auch einen Unterschied beim "Rollback", während 0 keine Änderungen an der Datenbank vornimmt, so dass der Client sicher sein kann, dass mit der Datenbank nichts Schlimmes passiert ist, -1 wird begehe 'so viel wie möglich' - oder so ähnlich. (Ich bin immer noch auf der Suche nach den Online-Ressourcen, die eine bessere Beschreibung für diesen Unterschied enthalten.) – mjn

+0

@mjustin: -1 Commit so viel wie möglich ist eine ziemlich sichere Wette. Ich bin nicht sicher, aber es ist das, was ich erwarten würde ... :) –