Ayende, I am not sure what you meant by this comment, but from your other 
replies, it sound like you agree with me that it would be better if explicit 
session.BeginTransaction was not requried, correct?

Thanks!
-Michael

________________________________
From: [email protected] 
[[email protected]] On Behalf Of Ayende Rahien 
[[email protected]]
Sent: Monday, March 23, 2009 11:48 AM
To: [email protected]
Subject: [nhibernate-development] Re: More DTC issues

We don't really care for that, we let the DTC infrastructure take care of this.

On Mon, Mar 23, 2009 at 12:57 PM, Michael Teper 
<[email protected]<mailto:[email protected]>> wrote:
Fabio, Ayende,

Another thing to consider is the nested transaction scenario like this:

using (var scopeOuter = new TransactionScope())
{
   // load / change some object(s)

   using (var innerScope = new TransactionScope())
   {
       try
       {
           // load / change something else
           innerScope.complete();
       }
       catch { // do something }
    }

    outerScope.complete();
}

This may look silly but if the inner transaction is encapsulated in a different 
class, this is a very plausible scenario. Wherever NH keeps track of the 
current transaction scope, it needs to be aware of potential for nesting.

Thanks!
-Michael


________________________________
From: 
[email protected]<mailto:[email protected]>
 
[[email protected]<mailto:[email protected]>]
 On Behalf Of Fabio Maulo [[email protected]<mailto:[email protected]>]
Sent: Monday, March 23, 2009 9:45 AM
To: 
[email protected]<mailto:[email protected]>
Subject: [nhibernate-development] Re: More DTC issues



2009/3/23 Ayende Rahien <[email protected]<mailto:[email protected]>>
The problem is that usually the DTC is opened by a lower level component, and 
my code has no control over it.
More than that, I usually don't have control over NH's code as well.

It goes like this:

1/ low level infrastructure - dtc
2/ high level infarstruture - nh
3/ business code - my stuff

and then
3 -end
2- end
1-end

If 2 don't know about 1, 2 should use session.BeginTransaction and 
session.Transaction.Commit().


I don't want to be aware of all of this issues, I just want to make this work.
So explicitly flushing is an option that I would generally be against.

Making NH's transaction equal to the dtc is also not a good option, because the 
use of the DTC is to manage several resources, not just NH.

You know... I never said dtc=nhTx
What I would like to avoid is If(DTC) {something} else {somethingelse} inside 
NH-Core.

--
Fabio Maulo

Reply via email to