[ vujkev @ 14.08.2016. 09:52 ] @
Nekoliko db operacija u nekoliko različitih klasa treba da se završe u okviru jedne transakcije. Za izvršavanje ovog seta operacija koristim TransactionScope

Code (csharp):

 using (var scope = new TransactionScope())
 {
      using (var db = new data.dbContext())
      {
       ...
      }

      using (var db = new data.dbContext())
      {
       ...
      }

      using (var db = new data.dbContext())
      {
       ...
      }

      scope.Complete();
 }
 


Želeo bih da svaka od klasa koja menja db ima mogućnost da odradi dodatni posao kad se cela transakcija uspešno završi i podaci se snime u bazu (npr obavesti korisnika da je snimanje uspešno).
Za sad sam uspeo da proširim originalni dbcontext i promenim originalni saveChanges tako da nakon snimanja u bazu aktiviram custom event. Problem je što se ovaj event aktivira odmah čim pozovem SaveChanges, a pre nego što odradim Complete cele transakcije.
Postoji li neki postupak da iz dbContexta izvučem podatak da se radi o nekoj većoj transakciji i da pratim kad se izvrši Complete te transakcije?

Poz.
[ mmix @ 15.08.2016. 00:46 ] @
Realno ne, jer context generalno nema pojma kolika je velicina transakcije ciji je deo (osim ako je implicitna, ali to je besmisleno jer transakcja ionako postoji na nivou konekcije).
Koliko ja znam ne postoji feedback na nivou transactionscope-a, commit prolazi silent. Medjutim ako si ti u kodu vec dosao do Complete() metoda znaci da su svi savechanges prosli ok, uradi notifikaciju tada?

Ili napravi neku listu Action-a pa tu ubacuj mini andlere koje ces pozvati posle Complete(), onda mozes imati varijabilan broj akcija u scope-u.