I see that you want something on session manager, I may think on this, but no promises(i don't have time atm)
Tuna Toksöz http://tunatoksoz.com http://turkiyealt.net http://twitter.com/tehlike Typos included to enhance the readers attention! On Tue, Feb 17, 2009 at 9:57 PM, Tuna Toksoz <[email protected]> wrote: > Why not Castle.Transactions? > > > Tuna Toksöz > http://tunatoksoz.com > http://turkiyealt.net > http://twitter.com/tehlike > > Typos included to enhance the readers attention! > > > > > On Tue, Feb 17, 2009 at 9:49 PM, Andrew Melnichuk < > [email protected]> wrote: > >> Well, implementation doesn't look complex, and clients will not know all >> that details. Clients just open sessions/starting transaction and >> commit(rollback) transactions/closing sessions - common pattern when working >> with NHibernate. >> Yes ATM will definitely work in that case too, but i need more control >> over transactions, for example, do some additional actions on transaction >> rollback. >> I'm just asking, if ISessionManager supports stack behavior for sessions, >> why it doesn't do same for transactions, which is logical IMO? >> >> >> On Tue, Feb 17, 2009 at 2:20 PM, Jason Meckley <[email protected]>wrote: >> >>> >>> you could implement this logic yourself by decorating the session >>> manager, but this will get messy with tracking how many times open >>> session is called, and then decrementing the count until you "really" >>> commit the transaction. Not to mention if you call transaction.commit >>> (); the principle of least surprise would dictate that you are >>> actually committing the transaction. >>> >>> ATM is very simple to use. add facility, put Transactional attribute >>> on class, put Transaction attribute on member, Done. Depending on how >>> you structure your code, you could even register the components to get >>> a transaction attribute automatically, so you don't have to think >>> about it. Set and Forget. >>> >>> Jason >>> >>> On Feb 17, 5:57 am, Andrew Melnichuk <[email protected]> >>> wrote: >>> > Thanks pointing to this. It would work. But what i thought is that it >>> is >>> > logical to have this stack behavior of Begin/Commit calls right in >>> > ISessionManager - if only first BeginTransaction() starts new >>> transaction >>> > and further calls return existing transaction, then only last Commit() >>> > commits transaction. Same like OpenSession()/Close() methods do. What >>> you >>> > think? >>> > >>> > On Tue, Feb 17, 2009 at 12:41 PM, Germán Schuager <[email protected] >>> >wrote: >>> > >>> > >>> > >>> > > Use Automatic Transaction Management facility: >>> > > >>> http://castleproject.org/container/facilities/trunk/nhibernate/transa... >>> > >>> > > On Tue, Feb 17, 2009 at 7:32 AM, Andrew Melnichuk < >>> > > [email protected]> wrote: >>> > >>> > >> Hi All. >>> > >>> > >> I have several components, which use ISessionManager. >>> > >> Typical component method is: >>> > >> using (ISession s = sessMgr.OpenSession()) >>> > >> using (ITransaction tx = s.BeginTransaction()) >>> > >> { >>> > >> //save something here... >>> > >> tx.Commit(); >>> > >> } >>> > >>> > >> But some component methods call other component methods, so i need a >>> kind >>> > >> of transaction stack behavior: >>> > >> public void Outer() >>> > >> { >>> > >> using (ISession s = sessMgr.OpenSession()) >>> > >> using (ITransaction tx = s.BeginTransaction()) >>> > >> { >>> > >> //save something here... >>> > >> Inner(); >>> > >> tx.Commit(); >>> > >> } >>> > >> } >>> > >>> > >> public void Inner() >>> > >> { >>> > >> using (ISession s = sessMgr.OpenSession()) >>> > >> using (ITransaction tx = s.BeginTransaction()) >>> > >> { >>> > >> //save something here... >>> > >> tx.Commit(); >>> > >> } >>> > >> } >>> > >>> > >> Inner's BeginTransaction() call returns existing transaction, its >>> ok, but >>> > >> Inner's Commit() call commits it, so the Outer's Commit() raises >>> exception. >>> > >> ISessionManager supports nested ISession's, as described here >>> > >> >>> http://castleproject.org/container/facilities/trunk/nhibernate/usingi.. >>> .. >>> > >>> > >> Is there a way to use with nested transactions? >>> > >>> > >> -- >>> > >> Best regards, >>> > >> Andrew Melnichuk >>> > >>> > -- >>> > Best regards, >>> > Andrew Melnichuk >>> >>> >> >> >> -- >> Best regards, >> Andrew Melnichuk >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
