Implement IUnitOfWorkFactory, delegate to the real implementation and handle
CurrentSession
On Mon, Oct 13, 2008 at 7:50 PM, Will Shaver <[EMAIL PROTECTED]> wrote:
> > IsStarted
>
> I need to set a filter on the session when it is first opened to the
> current time. I can't simply check to see if the unit of work is started, I
> need it to call me.
>
> > transient/singleton
>
> I assume that this would involve some windsor core stuff that I've never
> looked at... hmm...
>
> On Fri, Oct 10, 2008 at 5:08 PM, Ayende Rahien <[EMAIL PROTECTED]> wrote:
>
>> UnitOfWork.IsStarted
>>
>> Patch to check that the Interceptor is set to transient instead of
>> singleton or some such
>>
>>
>> On Sat, Oct 11, 2008 at 2:02 AM, Will Shaver <[EMAIL PROTECTED]>wrote:
>>
>>> I'm not sure what exactly I would patch. On review it is more a
>>> word-of-caution than something wrong with the Rhino code.
>>>
>>> I'll just use UnitOfWork.CurrentSession in my interceptor.
>>>
>>> While we're on the topic - is there a way to determine when a unit of
>>> work is started? I can't seem to find one (and would probably be willing to
>>> patch for that.) Previously I was using IInterceptor.AfterTransactionBegin,
>>> but that always necessitated starting a transaction before doing ANY work...
>>>
>>>
>>> Something like INHibernateInitializationAware but instead
>>>
>>> public
>>> interface IUnitOfWorkAware
>>> {
>>> void UnitOfWorkStarted();
>>> void UnitOfWorkResumed(); //for long unit of work
>>> void UnitOfWorkStopped();
>>> }
>>> still thinking about it, but I'd really just need started/resumed.
>>>
>>> -Will
>>>
>>>
>>>
>>>
>>> On Fri, Oct 10, 2008 at 4:46 PM, Ayende Rahien <[EMAIL PROTECTED]>wrote:
>>>
>>>> 1/ to be session aware interecptor, you must be specified at OpenSession
>>>> time. Nhibernate supports configuration time interceptors, but they are not
>>>> session aware, for multi threading safety reasons
>>>> 2/ a patch would be welcome.
>>>>
>>>>
>>>> On Sat, Oct 11, 2008 at 1:40 AM, Will Shaver <[EMAIL PROTECTED]>wrote:
>>>>
>>>>> in NHibernateUnitOfWorkFactory
>>>>>
>>>>> if (IoC.Container.Kernel.HasComponent(typeof(IInterceptor)))
>>>>> {
>>>>> IInterceptor interceptor = IoC.Resolve<IInterceptor>();
>>>>> ...
>>>>>
>>>>> If the IInterceptor is set up in the windsor config with the default
>>>>> implementation it will be a singleton. When OpenSession is called in
>>>>> NHibernate it will:
>>>>>
>>>>> if (sessionLocalInterceptor != null)
>>>>> {
>>>>> sessionLocalInterceptor.SetSession(session);
>>>>> }
>>>>>
>>>>> So if we have more than one session open at once - easy to do for a web
>>>>> app - we could be causing a clobbering of the session stored in the
>>>>> interceptor right?
>>>>>
>>>>> If so, do you recommend that you
>>>>>
>>>>> #1 Use UnitOfWork.CurrentSession instead of relying on SetSession()
>>>>> with a local var
>>>>> #2 Set up the lifestyle of the Interceptor to be something other than
>>>>> singleton, and if so what?
>>>>>
>>>>> - Will
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>> >>
>>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Rhino Tools Dev" 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/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---