Warum AutoIncrement bei Fehler in DataTable fortgeschrieben?

12/08/2008 - 11:34 von Frank Boehland | Report spam
Ein Hallo,

ich habe in einer SQL Server DB die Tabellen "Projekt" und "ProjektBlatt".
Beide haben eine 1:N - Beziehung über die ProjektID, einem int-Wert mit
IDENTITY(1,1).

Dies bilde ich in der DataTable nach ...

dtProjekt = New DataTable()

adapterProjekt.FillSchema(dtProjekt, SchemaType.Source)

dtProjekt.Columns("ProjektID").AutoIncrement = True
dtProjekt.Columns("ProjektID").AutoIncrementSeed = 1
dtProjekt.Columns("ProjektID").AutoIncrementStep = 1

adapterProjekt.MissingSchemaAction =
MissingSchemaAction.AddWithKey
...

"Projektblatt" ist ebenfalls eine DataTable. Beide möchte ich innerhalb
einer Transaktion aktualisieren, z.B. neue Sàtze einfügen. Ich habe hier kein
DataSet- und DataRelations-Objekt gewàhlt.

Brauche ich diese zwingend, um den àußeren, in SQL Server angelegten
Sachverhalt abzubilden?

Es tritt ein Fehler in Projekt 4 auf - OK, ich kann das Projekt und die
Blàtter nicht anlegen.
Vor Anlegen des nàchsten Projektes erfolgt ...

dtProjekt.Rows.Clear()
bearbeitet = adapterProjekt.Fill(dtProjekt)

Statt der erwarteten ProjektID 4 hàlt er aber den Wert 5 bereit, sodass ein
Aktualisieren zu einem FOREIGN-KEY-Fehler führt.

Warum wird auch bei Fehler intern weitergezàhlt?

Ich hoffe, jemand versteht mich halbwegs. Vieken Dank für Antworten

Frank
 

Lesen sie die antworten

#1 Rainer.Ulk
12/08/2008 - 16:01 | Warnen spam
"Frank Boehland" schrieb ^

Brauche ich diese zwingend, um den àußeren, in SQL Server angelegten
Sachverhalt abzubilden?



Entweder Du verwaltest die Schlüssel oder Du làsst es die DB-Komponenten.
Wenn es die DB-Komponenten machen sollen, müssen sie auch wissen was sie tun
sollen.

Die Tabelle "ProjektBlatt" hats Du nicht beschrieben, ich vermute hier liegt
auch schon ein Fehler vor.

Ähnliche fragen