Yep removing the flush works... It means I need to move the flush out of my repository classes though... will see how that pans out
Many thanks // CAM On Sep 12, 5:27 pm, Eric Hauser <[EMAIL PROTECTED]> wrote: > Are you using 2nd level cache? What's the log output look like? And > does it work if you do this: > > try { > ... > // session.Flush(); > tx.Rollback()} finally { > > session.Dispose(); > txManager.Dispose(tx); > > } > > On Sep 12, 7:06 am, CAM <[EMAIL PROTECTED]> wrote: > > > There is no exception occurring in the test code, I'm just simulating > > the rollback. The problem is even though I do a rollback and close the > > session the objects added inside the transaction are available... > > > Note that the underlying database is ok, it just seem to be a problem > > with the in memory session presumably its to do with what Castle is > > doing to provide its own session wrapper. > > > // CAM > > > On Sep 12, 10:12 am, "Ken Egozi" <[EMAIL PROTECTED]> wrote: > > > > Im not sure if it's related, but in your code sample, if the exception > > > occur > > > after "session.Flush();", then the finally is executed, but " > > > tx.Rollback(); > > > session.Close();" is not. > > > > On Fri, Sep 12, 2008 at 12:05 PM, CAM <[EMAIL PROTECTED]> wrote: > > > > > I'm having an odd problem while using the NHibernate facility and > > > > testing the transactional rollbacks. > > > > > This is the senario: > > > > > - OpenSession from ISessionManager > > > > - Get an Entity > > > > > - Start a transaction using ITransactionManager > > > > - Add a few new Entities > > > > - call session.Flush > > > > - Exception occurs... > > > > - call Rollback > > > > - Close the session. > > > > - Dispose of Transaction. > > > > > - Now to verify the rollback I get another session using OpenSession > > > > from ISessionManager > > > > - Get one of the Entities that was rolledback... > > > > > The problem is that it still exists in the session??? > > > > > I realize that Castle is pooling sessions for me, but I've explicitly > > > > closed the session? Whats going on? > > > > > Heres the code: > > > > > ISessionManager sessionManager = > > > > container.Resolve<ISessionManager>(); > > > > > var product1 = new Product() { Code = "ZTRANS1", Description = > > > > "Product Trans1" }; > > > > var product2 = new Product() { Code = "ZTRANS2", Description = > > > > "Product Trans2" }; > > > > > // Open the session outside of the transaction... > > > > ISession session = sessionManager.OpenSession(); > > > > > var getProductfirst = session.Get<Product>(product1.Id); > > > > ITransactionManager txManager = > > > > container.Resolve<ITransactionManager>(); > > > > Castle.Services.Transaction.ITransaction tx = > > > > txManager.CreateTransaction(TransactionMode.Requires, > > > > IsolationMode.ReadCommitted); > > > > > try > > > > { > > > > tx.Begin(); > > > > session.SaveOrUpdate(product1); > > > > session.SaveOrUpdate(product2); > > > > session.Flush(); > > > > tx.Rollback(); > > > > session.Close(); > > > > } > > > > finally { > > > > txManager.Dispose(tx); > > > > } > > > > > session = sessionManager.OpenSession(); > > > > var getProduct1 = session.Get<Product>(product1.Id); > > > > // FAILS this assert... > > > > Assert.IsNull(getProduct1); > > > > var getProduct2 = session.Get<Product>(product2.Id); > > > > Assert.IsNull(getProduct2); > > > > > This is in RC3 > > > > > thanks > > > > > // CAM > > > > -- > > > Ken > > > Egozi.http://www.kenegozi.com/bloghttp://www.musicglue.comhttp://www.castle... --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to castle-project-users@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---