Did you mark the class as transactional?
On Thu, Jul 21, 2011 at 7:34 PM, Tomas Lycken <[email protected]>wrote: > There's a bunch of failing tests in the NCVIB branch where I put a sample > for some other problem before, at > https://github.com/ncvib/NCVIB/tree/inspectiondb in the > IntegrationTest.NCVIB.Repositories.InspectionObjectRepository class. I'll > find a specific one to point to tomorrow, when I'm at work and have the code > infront of me. > > I'll gladly help with the docs if I can - I'm not sure I understand much of > how the library works, though, so I might not be of much help. But I'll do > my best =) > > // Tomas > > > > On Thu, Jul 21, 2011 at 21:20, Henrik Feldt <[email protected]> wrote: > >> Hello Tomas, >> >> Can you provide a failing unit test? >> >> If I help you fix this, would you help me update the documentation? >> >> Henrik >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Tomas Lycken >> Sent: den 20 juli 2011 13:42 >> To: Castle Project Users >> Subject: Transaction attribute not orchestrating transactions as expected >> >> Hi everybody, >> >> I have a generic repository base class for my NHibernate repositories, >> Repository<TEntity>, in which I want to provide a couple of standard >> methods >> within transactions. I'm using the Castle.Services.Transaction, together >> with Castle.Facilities.AutoTx and Castle.Facilities.NHibernate >> >> public abstract class Repository<TEntity> where TEntity : >> IEntity // common entity interface that declares int ID { get; } >> { >> protected Func<ISession> SessionGetter; >> >> public Repository(Func<ISession> sessionGetter) { SessionGetter = >> sessionGetter; } >> >> [Transaction(Mode = TransactionScopeOption.Required)] >> protected virtual void Save(TEntity entity) >> { >> var session = sessionGetter(); >> session.Save(entity); >> } >> } >> >> When I call this method from a repository implementation, I get an >> exception >> saying "Castle.Facilities.AutoTx.MissingTransactionException : No >> transaction in context when trying to instantiate model >> 'NHibernate.ISession' for resolve type 'NHibernate.ISession'. If you have >> verified that your call stack contains a method with the [Transaction] >> attribute, then also make sure that you have registered the AutoTx >> Facility." If I put the attribute on the calling method, everything works >> - >> but I want to be able to throw and catch exceptions in the calling methods >> without having to worry about the transaction committing or rolling back, >> so >> I'd like to isolate the db work in small methods that orchestrate a >> transaction, do its job and then commits (or rolls back and bubbles the >> exception). >> >> I am not familiar enough with the castle project to really understand >> what's >> going on behind the scenes here, and the documentation I've found (here: >> http://docs.castleproject.org/Windsor.ATM-Facility.ashx) >> is pretty sparse and mildly outdated. >> >> Please advise if this is doable - and if so, how. Thanks! >> >> -- >> 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. >> >> -- >> 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. >> >> > -- > 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. > -- 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.
