I solved this problem, though I think it's not a very good way. I mannually dispose all the UnitOfWork instance at TearDown method. I think the better way is AbstractTransaction dispose all resources that enlist in it when AbstractTransaction is disposed.
On Mon, Dec 8, 2008 at 2:21 PM, karron <[EMAIL PROTECTED]> wrote: > By the way, my idea of unit of work is stealling from your > Rhino.Commons. Thank you very much, Ayende. I'm a fan of you. :) > > > On Mon, Dec 8, 2008 at 1:51 PM, karron <[EMAIL PROTECTED]> wrote: >> It seems like the ATM doesn't dispose my resource explicitly . The >> dispose method in AbstractTransaction just clear the Resources, >> doesn't call the resource's dispose method. And I will dispose my >> UnitOfWork when the resource dispose. So in this situation, my >> unitofwork don't be disposed, when I use it again, it still try to >> persist dirty entity again. I find the problem because when I execute >> all of my unit test, one will be failed. But when I only execute it, >> it pass. >> >> On Mon, Dec 8, 2008 at 1:32 PM, Ayende Rahien <[EMAIL PROTECTED]> wrote: >>> IIRC, you shouldn't do anything, if the transaction wasn't committed, it >>> will be rolled back on dispose. >>> >>> On Mon, Dec 8, 2008 at 12:28 AM, karron <[EMAIL PROTECTED]> wrote: >>>> >>>> Thank you very much for your very quick response, Ayende. >>>> >>>> I set ISession.FlushMode = FlushMode.Commit. So when the transaction >>>> commit, my entity will be persisted to db. And before inserting my >>>> entity, the validator will check if the entity is valid, it throws an >>>> exception. In other words, the validation exceptions are raised at >>>> commit. So how to change my codes to avoid this problem? I have no >>>> idea about it. Thank you very much. >>>> >>>> On Mon, Dec 8, 2008 at 1:13 PM, Ayende Rahien <[EMAIL PROTECTED]> wrote: >>>> > CommittedResourceException means that you have failed to commit the >>>> > transaction so you can't even roll it back. >>>> > >>>> > On Mon, Dec 8, 2008 at 12:10 AM, karron <[EMAIL PROTECTED]> wrote: >>>> >> >>>> >> Hi, >>>> >> >>>> >> I implemented a customer resource from IResource interface, it begins( >>>> >> commit, rollback) nhibernate transactions. I also add my customer >>>> >> IPreInsertEventListener to nh for validations. When my resource >>>> >> commit, the validation listener checks if the entity is valid, if not, >>>> >> it throws an exception. And AbstractTransaction catches the exception, >>>> >> and wraps it as CommitResourceException, and throws it. >>>> >> TransactionInterceptor catches this exception, but it says "// Whoops. >>>> >> Special case, let's throw without attempt to rollback anything" ( in >>>> >> >>>> >> >>>> >> D:\Sources\castle\Facilities\AutomaticTransactionManagement\Castle.Facilities.AutomaticTransactionManagement\TransactionInterceptor.cs, >>>> >> line 128). I don't know why not rollback the transaction. I don't know >>>> >> which is special. Any suggestion? >>>> >> >>>> >> I haven't used NHIntegrationFacility yet. >>>> >> >>>> >> Thanks. >>>> >> >>>> >> -- >>>> >> Regards, >>>> >> Karron >>>> >> >>>> >> >>>> > >>>> > >>>> > > >>>> > >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Karron >>>> >>>> >>> >>> >>> >>> >>> >> >> >> >> -- >> Regards, >> Karron >> > > > > -- > Regards, > Karron > -- Regards, Karron --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
