Michael,
Perhaps my questions does not sound as a support request but even so an
answer will be appreciate and may help some user.

2010/2/18 Fabio Maulo <[email protected]>

> questions:
> Are you managing the NH's session and trasaction at the same level of
> ambient transaction ?
> Where you are opening a NH's session and NH's transaction should you be
> aware of ambient transaction ?
>
> Where I'm managing the NH's session and NH's transaction I can't, and I
> wouldn't, be aware if it happen in an AmbientTransaction or not.
> Have you some place where the code in your app. look like that you sent us
> ?
>
>
> 2010/2/18 Michael Teper <[email protected]>
>
>  Fabio,
>>
>> Does that mean the correct pattern is:
>>
>> public void DoSomething()
>> {
>>   using (var scope = new TransactionScope())
>>   {
>>     var s = SessionFactory.OpenSession();
>>     s.BeginTransaction();
>>
>>     var foo = s.Get<Foo>();
>>     foo.Prop = "bar";
>>     s.SaveOrUpdate(foo);
>>
>>     s.CommitTransaction();
>>     scope.Complete();
>>   }
>> }
>>
>> If so, why are BeginTransaction and CommitTransaction needed? They feel
>> redundant...
>>
>> Thank you!
>> -Michael
>>
>>
>>  ------------------------------
>> *From:* [email protected] [
>> [email protected]] On Behalf Of Fabio Maulo [
>> [email protected]]
>> *Sent:* Thursday, February 18, 2010 6:53 AM
>>
>> *To:* [email protected]
>> *Subject:* Re: [nhibernate-development] Re:
>> AdoNetWithDistrubtedTransactionFactory
>>
>>  In order to use NH correctly you should:
>> 1) throw away the session after an exception
>> 2) use the NH's transaction
>>
>>  Use NH's transaction mean:
>> 1) open the session inside a transactionscope
>> 2) after open the session begin a NH's transaction using
>> session.BeginTransaction
>>
>> 2010/2/18 Sathish Naga <[email protected]>
>>
>>> The test is reflecting the way I use the NH session and transaction
>>> scope.
>>>
>>> When I run the test with the default transaction
>>> factory(AdoNetWithDistrubtedTransactionFactory), it fails on first
>>> session.Clear.
>>>
>>> When I override the Session Factory to use the AdoTransactionFactory,
>>> sample test didn't fail on first session.Clear().
>>>
>>> I have the test as patch, if you want I can send/upload it.
>>>
>>> Thanks
>>> Sathish
>>>
>>> On Feb 17, 9:51 pm, Fabio Maulo <[email protected]> wrote:
>>> > Where is the NH's transaction ? (ITransaction)
>>> > I mean... you said you have a issue
>>> > with AdoNetWithDistrubtedTransactionFactory but in your code you
>>> haven't use
>>> > it, so... where is the issue ?
>>> >
>>>  > 2010/2/17 Sathish Naga <[email protected]>
>>>  >
>>> >
>>> >
>>> >
>>> >
>>> > > Hi,
>>> >
>>> > > I've a issue with NHibernate 2.1x and
>>> > > AdoNetWithDistrubtedTransactionFactory and SessionImpl.
>>> >
>>> > > To give you background of my Infrastructure, I have a NH session
>>> > > created per web request.
>>> >
>>> > > On Begin Request I create a Session and On End Request, I clear and
>>> > > dispose the NH session.
>>> >
>>> > > using (ISession s = sessions.OpenSession())
>>> > > {
>>> > >        s.FlushMode = FlushMode.Commit;
>>> >
>>> > >        using (var tx = new
>>> > > TransactionScope(TransactionScopeOption.Required,
>>> > > new TimeSpan(0,0,0,0,10000)))
>>> >
>>> > >                                  //
>>> > > Set timeout to 10 secs
>>> > >        {
>>> > >                try
>>> > >                {
>>> > >                        s.Save(new Person { CreatedAt =
>>> DateTime.Now});
>>> > >                        Thread.Sleep(20000); //Sleep for 20 secs to
>>> timeout
>>> > > the transaction
>>> > >                        s.Flush();
>>> > >                        tx.Complete();
>>> > >                }
>>> > >                catch (Exception ex)
>>> > >                {
>>> > >                        //when this transaction fails, clear internal
>>> entity
>>> > > cache on
>>> > > session and move on
>>> > >                        s.Clear();//
>>> > >                }
>>> > >        }
>>> > >       //This transaction expected to be successful
>>> > >        using (var tx = new TransactionScope())
>>> > >        {
>>> > >                try
>>> > >                {
>>> > >                        s.Save(new Person { CreatedAt = DateTime.Now
>>> });
>>> > >                        s.Flush();
>>> > >                        tx.Complete();
>>> > >                }
>>> > >                catch (Exception ex)
>>> > >                {
>>> > >                        s.Clear();
>>> > >                }
>>> > >        }
>>> > > }
>>> >
>>> > > As i reuse the same session for multiple transactions, when any of my
>>> > > transaction fails, I want to clear the session internal cache. In
>>> that
>>> > > case when the error is due to TransactionScope it fails on
>>> > > session.clear and brings whole application down.
>>> >
>>> > > Once JIRA is up, I'm going to add this defect. I have the test
>>> > > created, Looks like I cant attach the patch to this mail.
>>> >
>>> > --
>>> > Fabio Maulo
>>>
>>
>>
>>
>> --
>> Fabio Maulo
>>
>>
>
>
> --
> Fabio Maulo
>
>


-- 
Fabio Maulo

Reply via email to