I feel a déjà vu... we discussed this same issue last month (but I think it
was on the users group).
There's even an open jira: http://216.121.112.228/browse/NH-2181

<http://216.121.112.228/browse/NH-2181>If you ask me... we do have a
violation of the principle of least surprise.
I can't count how many mails in the users group and questions in
Stackoverflow I've answered with "use a transaction".

While I agree with Fabio in that an official reference on TransactionScope
is needed (in the main docs), this should be more intuitive for new users.
Maybe NH 3 is an opportunity to introduce breaking changes...

   Diego


On Thu, May 6, 2010 at 11:12, Davy Brion <[email protected]> wrote:

> Well for starters, it just feels pointless to use an NHibernate Transaction
> if TransactionScope is supposed to take care of that for you.  And let's be
> honest here, that's just how it works with probably every other data layer
> out there in the .NET world.  Why should we be different?
>
> But if usage of an NH transaction is indeed absolutely required, then we
> sure shouldn't put up with the current behavior either.  It's way too easy
> to make a mistake with it and just putting a notice in the official
> reference about it feels like a cop-out instead of actually dealing with a
> real problem.
>
> On Thu, May 6, 2010 at 4:03 PM, Fabio Maulo <[email protected]> wrote:
>
>> IMO is the moment to write something in out official reference.
>> We should dedicate a section on : *How work with TransactionScope*
>>
>> I have never found a problem because I'm opening the NH'session and begin,
>> always, the NH's transaction inside the transaction scope. All problem I
>> have seen is about ppl who don't want use the NH's transaction... with which
>> reason ? so far I saw only "style" reason... for me the "style" is a matter
>> for FashionTV.
>>
>> On Thu, May 6, 2010 at 9:59 AM, John Davidson <[email protected]>wrote:
>>
>>> It may seem to be a good idea to have a mandatory transaction within a
>>> session, but you are forgetting that a session may use many transactions,
>>> which makes it difficult to force a transaction creation within a sesssion.
>>> I.E. when you commit a transaction and and the session is not yet closed do
>>> you automatically create another transaction, just in case the session is
>>> going to do more transactional work?
>>>
>>> I think many of the problems are a result of changes from v1.2 to 2.x
>>> where it was recognized that a transaction was necessary for any read or
>>> write activity with the database. However, there probably is a substantial
>>> body of applications started in v1.2 that were upgraded to v2.x where the
>>> upgrade to wrap all reads did not happen.
>>>
>>> I don't think this can easily be fixed by changing the session semantics.
>>>
>>> John Davidson
>>>
>>>
>>> On Thu, May 6, 2010 at 8:42 AM, Davy Brion <[email protected]> wrote:
>>>
>>>> yup, i feel the same way
>>>>
>>>>
>>>> On Thu, May 6, 2010 at 2:37 PM, Richard Brown 
>>>> <[email protected]>wrote:
>>>>
>>>>> IMHO, if the usage is not allowed, we should change the API to disallow
>>>>> session without a tx.  If it is allowed we should fix it.
>>>>>
>>>>> Sent from my Android phone.
>>>>>
>>>>> On 6 May 2010 13:19, "Davy Brion" <[email protected]> wrote:
>>>>>
>>>>> Hey guys,
>>>>>
>>>>> i just ran into a weird issue with leaking connections due to using a
>>>>> TransactionScope without using an NH transaction...  i've described the
>>>>> problem here:
>>>>>
>>>>> http://davybrion.com/blog/2010/05/avoiding-leaking-connections-with-nhibernate-and-transactionscope/
>>>>>
>>>>> the thing is: is this a bug in NH or not? I mean... it might be due to
>>>>> bad usage, but if the usage scenario is bad, then NHibernate should 
>>>>> probably
>>>>> warn against it instead of playing along and failing silently in some
>>>>> cases...
>>>>>
>>>>> thoughts?
>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> Fabio Maulo
>>
>>
>

Reply via email to