Toon posts:

[VB.NET] Transactie parent rollbacken vanuit child class

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Ik heb een aantal classes namelijk lid, kind en hobby

in deze classes heb ik een aanroep naar mijn database module voor het toevoegen van een lid, toevoegen kind, toevoegen hobby.

Ik heb een storage procedure toevoegen lid, toevoegen kind, toevoegen hobby. Deze roep ik aan vanuit de desbetreffende class. via de database module. Als ik bijvoorbeeld als eerste een lid doe toevoegen en dit wordt succesvol uitgevoerd wil ik een commit versturen (dit is geen probleem want ik zit in de class) hierna wordt een kind toevoegt. Echter hier gaat iets mis er wordt een rollback uitgevoerd (ook nog geen probleem). Maar doordat het kind niet is toegevoegd moet het lid ook verwijderd worden. Is het mogelijk om een rollback vanuit de class kind op lid uit te voeren.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Kun je niet domweg de transactie in een managementklasse starten, en die managementklasse de verschillende toevoegfuncties laten aanroepen in de drie klassen die je beschrijft?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:27

momania

iPhone 30! Bam!

Verwijderd schreef op woensdag 08 november 2006 @ 14:17:
Is het mogelijk om een rollback vanuit de class kind op lid uit te voeren.
Niet als je daar natuurlijk al een commit hebt gedaan ;)

Je zal dus de 'verantwoordelijkheid' van het opslaan naar de database, incl. transactie management, niet op het niveau moeten doen zoals je dat nu hebt.

Neem je whisky mee, is het te weinig... *zucht*


  • whoami
  • Registratie: December 2000
  • Nu online
Je bedoelt dus dat je nu voor iedere insert die je doet, een aparte transactie hebt ?

De beste manier is idd om je transactie-handling en je DB commando's niet in je kind, lid en hobby class te hebben, maar in een soort van management class of repository.

Indien je toch je DB functionaliteit in je kind, lid en hobby class wilt hebben, dan zou je je transactie-handling in je 'root' object moeten hebben, waar je je transactie start en commit. Bij het saven van de gerelateerde informatie, geef je dan je transactie-object door.
Echter, ik hou zelf niet zo van die aanpak. (Wat als je bv 2 kinderen in eenzelfde transactie wilt gaan saven ? )

https://fgheysels.github.io/


  • __fred__
  • Registratie: November 2001
  • Laatst online: 29-11 20:34
.NET heeft hele mooie ondersteuning voor impliciet transactiebeheer via de TransactionScope class

http://msdn2.microsoft.co...ons.transactionscope.aspx