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
-~----------~----~----~----~------~----~------~--~---

Reply via email to