Hi zusammen,
noch mal ein Frage:
Ich habe hier ein typ. Dataset das tabellenweise mittels TableAdapter.Fill() gefüllt wird.
Jetzt möchte ich unter anderem auch mal Parent-Rows löschen. Durch die gesetzte Cascade-Beziehung
im Dataset-Editor werden wie erwartet auch die Child-Rows auf "Deleted" gesetzt.
(...es können noch weitere Änderungen vorhanden sein (Modified etc.))
Wenn ich das richtig sehe, muss ich jetzt erstmal in umgekehrter Reihenfolge ein Update, beginnend mit den Child-Tabellen durchführen
Das mache ich über
Durch Table.GetChanges wird aber neue neue Tabelle erzeugt, so dass der Row-State in der Originaltabelle
nicht aktualisiert wird. Dadurch werden die eigentlich schon gelöschten Rows beim Folgeaufruf in richtiger Reihenfolge (Parent zuerst)
für alle anderen Row-States (z. B. Added/Modified)
wieder mit gefunden und es tritt ein Fehler auf.
Frage: Wie bekomme ich am besten die RowStates "mitgenommen", so dass die
Folgeaufrufe von Update für alle anderen Row-States nicht in einen Fehler laufen.
Ich denke, es kann doch nicht Sinn der Sache sein, für jede Row den State einzeln zu aktualisieren setzen, oder
Oder gehe ich an die ganze Sache falsch ran ?
Also, wie mach ich's richtig ?
Edit:
Ich hab's jetzt so gemacht :
(aber vielleicht gibt es ja noch was Eleganteres)
noch mal ein Frage:
Ich habe hier ein typ. Dataset das tabellenweise mittels TableAdapter.Fill() gefüllt wird.
Jetzt möchte ich unter anderem auch mal Parent-Rows löschen. Durch die gesetzte Cascade-Beziehung
im Dataset-Editor werden wie erwartet auch die Child-Rows auf "Deleted" gesetzt.
(...es können noch weitere Änderungen vorhanden sein (Modified etc.))
Wenn ich das richtig sehe, muss ich jetzt erstmal in umgekehrter Reihenfolge ein Update, beginnend mit den Child-Tabellen durchführen
Das mache ich über
Durch Table.GetChanges wird aber neue neue Tabelle erzeugt, so dass der Row-State in der Originaltabelle
nicht aktualisiert wird. Dadurch werden die eigentlich schon gelöschten Rows beim Folgeaufruf in richtiger Reihenfolge (Parent zuerst)
für alle anderen Row-States (z. B. Added/Modified)
wieder mit gefunden und es tritt ein Fehler auf.
Frage: Wie bekomme ich am besten die RowStates "mitgenommen", so dass die
Folgeaufrufe von Update für alle anderen Row-States nicht in einen Fehler laufen.
Ich denke, es kann doch nicht Sinn der Sache sein, für jede Row den State einzeln zu aktualisieren setzen, oder
Oder gehe ich an die ganze Sache falsch ran ?
Also, wie mach ich's richtig ?
Edit:
Ich hab's jetzt so gemacht :
(aber vielleicht gibt es ja noch was Eleganteres)
Visual Basic-Quellcode
- ChildAdapter.Update(Childtable.GetChanges(DataRowState.Deleted))
- ParentAdapter.Update(Parenttable.GetChanges(DataRowState.Deleted))
- ParentAdapter.Update(Parenttable.GetChanges(DataRowState.Added & DataRowState.Modified))
- ChildAdapter.Update(Childtable.GetChanges(DataRowState.Added & DataRowState.Modified))
- Childtable.AcceptChanges()
- Parenttable.AcceptChanges()
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Duke“ ()