DataSet - Transaktion mit Tableadaptern

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DataSet - Transaktion mit Tableadaptern

    Hallo zusammen,

    eigentlich eine ganz einfache Geschichte. Ich möchte eine Master-Detail - Datenspeicherung mit einer Transaktion absichern.

    In etwa so:

    Dim _trans As SqlServerCe.SqlCeTransaction = Nothing

    If M_myConn.State = ConnectionState.Closed Then M_myConn.Open()

    Tabelle1Da.InsertCommand = Tabelle1Cb.GetInsertCommand

    Tabelle2Da.InsertCommand = Tabelle2Cb.GetInsertCommand

    _trans = M_myConn.BeginTransaction

    Tabelle1Da.InsertCommand.Transaction = _trans

    Tabelle2Da.InsertCommand.Transaction = _trans

    Tabelle1Da.Update(Tabelle1Dt)

    Tabelle2Da.Update(Tabelle2Dt)

    _trans.Commit()

    Was mache ich falsch? Ich habe bei MS gelesen, dass auch bei mehreren Tableadaptern nur
    mit einer Transaktion gearbeitet werden soll.

    Bei dem oben aufgeführten Code passiert in Table2 nichts.

    Danke

    Dirk
    Leider nein. Scheint mit dem TableUpdate zu tun zu haben. Er fügt den Parent-DS in die Table ein, der Child-DS wird jedoch nicht eingefügt.

    Etwas anderes ist es, wenn bereits ein Parent-DS existiert, dann fügt er auch ein Child-DS ein. Aber in einen Rutsch, zuerst

    den Parent-DS einfügen und dann den Child-DS einzufügen klappt nicht.

    Dirk
    vermutlich ist deine Speicher-Strategie nicht auf dein System abgestimmt.
    Wenn
    mans richtig macht, ists problemlos möglich, auch übergeordnete und
    untergeordnete Datensätze ordnungsgemäß upzudaten, unter Ausnutzung der
    Änderungsverfolgung des Datasets - ich habe dafür eine Methode, die
    handelt das für jede Tabelle ab.

    Zunächst mal: Ist eine DB
    überhaupt wirklich erforderlich? Einfacher ist nämlich, ein Dataset
    einfach mit Dataset.WriteXml abzuspeichern.