2016-06-30 18 views
0

Wenn ich versuche, eine Datenbank mit einigen geänderten Werten in einem Dataset zu aktualisieren, wird keine Konkurrenzausnahme ausgelöst, wenn ich einige Werte manuell in der Datenbank ändere nachdem die Füllmethode für den Datensatz ausgeführt wurde. (Ich bekomme nur die Ausnahme, wenn ich eine Zeile manuell lösche und dann versuche, das Methoden-Update des Datenadapters aufzurufen).So überprüfen Sie, ob sich der Datenbankzeilenwert vor dem Füllen eines Datasets geändert hat

Wie sollte ich überprüfen, ob ich ein "schmutziges Lesen" auf meinem Datensatz habe ?.

+0

Bitte geben Sie Ihren Code ein. –

+0

http://pastebin.com/wPXuhzVy Dies ist etwas Ähnliches, das ich tue ... Wie überprüfe ich vor der Aktualisierung, ob der ursprüngliche Wert einer Zeile vom aktuellen Wert der Datenbank abweicht (Was als "dirty read" bezeichnet wird)). Ich dachte, ich würde nur eine Ausnahmegenehmigung erhalten, aber es scheint, als wäre meine Annahme falsch. – user3097132

+0

Siehe meine Antwort. Ich hoffe, das hilft. –

Antwort

0

Sie haben mehrere Möglichkeiten.

  • eine Kopie des ursprünglichen Entitätssatz gegen und machen vergleichen Keeping das ist schmutzig Bestimmung an dem Punkt, Sie müssen wissen, ob es schmutzig.

  • Überprüfen der Rowstate-Eigenschaft des Datarows und wenn Modified die Werte in den aktuellen und ursprünglichen DataRowVersions vergleichen. Wenn die zweite Änderung den Wert dem Original gleich macht, könnten Sie RejectChanges aufrufen, jedoch würde dies alle Änderungen in der Zeile zurückweisen. Sie müssen jedes Feld manuell verfolgen, da das Dataset nur pro Zeile oder pro Tabelle Änderungen behält.