Announcement

Collapse
No announcement yet.

DataRow.RowState ist Added nach Fill

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataRow.RowState ist Added nach Fill

    Hallo,

    ich habe eine Master und eine Detail-Tabelle in einem Dataset, die über einen Foreign Key verbunden sind. Die Mastertabelle enthält nach einem Fill eine komplette Kopie aus der Datenbank. Bei der Detail-Tabelle werden die notwendigen Datensätze mit einer besonderen FillByXxx Methode geladen, wenn der angezeigte Master-Datensatz wechselt. Merkwürdiger weise haben die Detail-Rows nach dem ersten Wechseln des Master-Datensatzes und nachdem automatisch FillByXxx aufgerufen wurde, alle den DataRow.RowState "Added".

    Kann mir jemand sagen, warum das so ist? Sollten nach einem Fill die Rows nicht alle "Unchanged" sein? Hat es vielleicht irgendwie mit dem Foreign Key zu tun?

    Danke.
    KS

  • #2
    Hallo Karsten,

    wie genau werden die Detail-Datensätze nachgeladen? Ersetzten die neuen Datensätze die bisherigen vollständig oder werden diese über Merge nur hinzugefügt?

    Ab dem .NET Framework 2.0 unterstütz sowohl die Merge-Methode der DataSet-Klasse alss auch die LoadDataRow-Methode der DataTable die Option LoadOption. Die 3 möglichen Werte diese Option erlauben die gezielte Steuerung, welchen RowState-Wert eine bestimmte Instanz haben soll. Der Standardwert ist OverwriteChanges.

    Wird die SqlDataAdapter-Eigenschaft AcceptChangesDuringFill auf den Wert False gesetzt, erhält jedes DataRow-Objekt beim Einlesen über Fill den Wert Added für die Eigenschaft RowState. Wird die Eigenschaft AcceptChangesDuringFill jedoch auf dem Standardwert True belassen, so setzt ADO.NET den RowState auf den Wert Unchanged (weil implizit die DataSet-Methode AcceptChanges am Ende von Fill aufgerufen wird).

    Comment


    • #3
      Hallo Andreas,
      die Probleme mit dem unerwarteten RowState waren wohl verursacht durch Seiteneffekte bei der Vererbeitung von Ereignisse der DataTable während des Fills. Hat sich insofern erledigt. Vielen Dank für Deine Hinweise auf die AcceptChangesDuringFill Eigenschaft und auf die Merge Methode, was ebensfalls wichtig zu wissen ist.
      Gruss
      Karsten

      Comment

      Working...
      X