Parent-Child Relation und Identity Column

Tech-Archive recommends: Fix windows errors by optimizing your registry

From: Wolf Hermann (no.spam_at_nit-consultants.de)
Date: 08/09/04


Date: Mon, 9 Aug 2004 11:33:22 +0200

Hallo NG,

ich bin schon einige Zeit am Probieren und komme nicht zu einem
zufriedenstellenden Ergebnis. Folgendes Problem: Ich arbeite mit C# und
einer MSDE Datenbank. Dabei spiele ich momentan mit den ADO.NET
Relationen herum (bis dato habe ich diese immer "manuell" überwacht und
programmiert). Jetzt wundere ich mich über folgenden Sachverhalt:

Natürlich setzt ADO.Net, je nach Seed und Increment Einstellung eine
lokale Identity-ID für einen neuen Datensatz im lokalen Dataset. Um
Eindeutigkeiten zu gewährleisten, habe ich diese beiden Eigenschaften in
meinem Dataset auf -1 gesetzt, neue Datensätze erhalten also in der
DataRowView des Datensatzes eine -1. Ich habe jetzt ein Formular, in dem
die Kopfdaten (Parent) und beliebig viele 1-n Informationen (Childs)
angezeigt werden. Ist der Header schon einmal gespeichert und ich arbeite
mit einer "wirklichen" Identity ID (also der auf dem SQL Server
verwendeten), funktioniert das Hinzufügen der Child-Datensätze auch
problemlos (beim AddNew des Grids setze ich die Child-Column auf den ID
Wert des Parents). Wie soll ich aber vorgehen, wenn ich den Header und
die Childs in einem Arbeitsschritt anlegen will ?

Der Header erhält nach dem Update die ID -1, die Childs kann ich, solange
ich nur im lokalen Dataset arbeite, auch auf diesen im Foreign Key
setzen. Will ich die Clients aber "Updaten", bekomme ich einen Foreign
Key Fehler. Natürlich kann ich den Parent beim Updaten auch auf die
tatsächlich vergebene ID gegenprüfen, wenn ich aber versuche im Dataset
die "wirkliche" ID des Parents in den Child-Datensätze abzulegen, erhalte
ich einen Fehler, da dieser Parent ja im Dataset nicht existiert. Beide
Vorgehensweisen führen mich nicht zu dem gewünschten Ergebnis:

1) Ich versuche Parents und Childs (die -1 im Identity bzw. Foreign Key
verwenden) zu aktualisieren und die Childs sagen es gibt in der Datenbank
keinen Parent mit -1 ID.
2) Nach der Ermittlung der tatsächlich vergebenen ID (im RowUpdated des
Datasets) will ich diese in die Foreign Key Column der Childs einspielen.
Diese sagen mir aber, ein Parent mit dieser ID existiert nicht, da dieser
ja im Dataset noch die lokale ID -1 besitzt.

Ich hoffe mich halbwegs klar ausgedrückt zu haben und wäre über eine
Hilfestellung sehr dankbar, viele Grüße

Wolf



Relevant Pages

  • Re: DataSet vor Update säubern
    ... Im Gegensatz dazu wäre eine "tiefe" Datei etwas in XML Form, ... >> allen seinen auch vielleicht später in der Datei kommenden Childs ... > Bringt denn ein später kommendes Cild keinen Parent mit? ... kommt, wird dafür im Dataset ein neuer Parent angelegt, und der Childteil ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • DataSet vor Update säubern
    ... Ich lese eine flache Textdatei in ein DataSet, ... Sofort, wenn der Child als ungültig erkannt wurde, den Parent im Dataset ... auftauchende gültige Childs würden ja den Rowstate nicht erben. ... Next by Date: ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: [why oom_adj does not work] Re: Linux killed Kenny, bastard!
    ... Your Kenny-killer will fail, too. ... Maybe the weight for childs should be ... so killing the parent is the right thing if you ... You can only win by by suspending or killing the factory. ...
    (Linux-Kernel)
  • Re: [why oom_adj does not work] Re: Linux killed Kenny, bastard!
    ... It is not always the case, processes start executing different binaries ... Maybe the weight for childs should be ... so killing the parent is the right thing if you ...
    (Linux-Kernel)
  • DataSet Relation DeleteRule
    ... das bei einem Dataset das Löschen ... einer Zeile einer Parenttabelle nicht die Childs löscht. ... Probiert habe ich: ... Next by Date: ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)