"A problem" might be a too strong word but... It fooled me. I didn't know that 
the connection was closed when a transaction was committed, because...

using(ISession session = OpenSession())
{
   using(ITransaction tx = session.BeginTransaction())
   {
      [...]
      tx.Commit();
   }
   Assert.IsFalse(session.IsConnected);
   Assert.AreEqual(ConnectionState.Closed, session.Connection.State);
}

...none of these asserts are ok. The first one fails due to the "ownConnection" 
field is true, the second assert fails due to this "implicit" instantiation of 
a new connection.

But never mind... Now I know what I didn't understand :)


From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Fabio 
Maulo
Sent: den 3 oktober 2008 14:36
To: [email protected]
Subject: [nhusers] Re: SV: [nhusers] Re: SV: [nhusers] Understanding how NH 
handles database connections

Ah... thank to verify it.
It working as expected... BTW the work for the weekend stay there because I 
must check the aggressive-release-mode.

Why, in your opinion, set the connection to null is a problem ?
2008/10/3 Roger Kratz <[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>>

Fabio,

Regarding this one about connections... I had a quick look at this and the 
thing that sort of fooled me was the fact that (using 
ConnectionReleaseMode.AfterTransaction) not only was the connection closed but 
also the connection was set to null so when touching the connection prop of 
ISession after a transaction is committed, a _new_ connection is created. 
Neither was session's closed field set. My asserts therefore fooled me.

The good thing is that I now understand what you talked about should happen :) 
The bad thing is... Is this really good? Wouldn't it be better if the old 
connection still was alive but closed? Would be more clear to the user if this 
handling would be more explicit by the user I think....

Is current impl by design or a bug? (I'm talking about connection==null, 
connectionmanager row 185).

/Roger

-----Original Message-----
From: [email protected]<mailto:[email protected]> 
[mailto:[email protected]<mailto:[email protected]>] On Behalf Of 
Roger Kratz
Sent: den 2 oktober 2008 00:11
To: [email protected]<mailto:[email protected]>
Subject: [nhusers] SV: [nhusers] Re: SV: [nhusers] Re: SV: [nhusers] 
Understanding how NH handles database connections


I double checked it, asserting in some tests in the trunk of nh tests to verify 
that nothing is wrong in my apps config and/or unitofwork impl. And yes - it 
seems that I'm correct.

...but please don't believe me too much. Late here in Sweden and I worked far 
too many hours. My eyes can fool me...

/Roger

________________________________
Från: [email protected]<mailto:[email protected]> [EMAIL 
PROTECTED]<mailto:[email protected]>] för Fabio Maulo [EMAIL 
PROTECTED]<mailto:[EMAIL PROTECTED]>]
Skickat: den 2 oktober 2008 00:01
Till: [email protected]<mailto:[email protected]>
Ämne: [nhusers] Re: SV: [nhusers] Re: SV: [nhusers] Understanding how NH 
handles database connections

Are you sure ?
The default connection release mode is "auto" that mean AfterTransaction...
mmm I must improve the logging of connection manager to check it.

2008/10/1 Roger Kratz <[EMAIL PROTECTED]<mailto:[EMAIL 
PROTECTED]><mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>>>

Hmm... I must miss something or maybe I misunderstand your but... When I commit 
an ITransaction, the db connection is still open.



________________________________
Från: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>
 [EMAIL 
PROTECTED]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>]
 för Fabio Maulo [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]><mailto:[EMAIL 
PROTECTED]<mailto:[EMAIL PROTECTED]>>]
Skickat: den 1 oktober 2008 23:38
Till: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>
Ämne: [nhusers] Re: SV: [nhusers] Understanding how NH handles database 
connections

Disconnect/Reconnect are pretty deprecated..
If you are outside a transaction the connection is released after command 
execution (depending on command batcher too).
If you are inside a transaction NH release the connection after transaction 
complete.

If you open a session using your connection NH give you the responsibility to 
do what you want with it.

2008/10/1 Roger Kratz <[EMAIL PROTECTED]<mailto:[EMAIL 
PROTECTED]><mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>><mailto:[EMAIL 
PROTECTED]<mailto:[EMAIL PROTECTED]><mailto:[EMAIL PROTECTED]<mailto:[EMAIL 
PROTECTED]>>>>

You can open/close the connection using session.Disconnect()/Reconnect() which 
is recommended if you hang on to the session for a while.

If you use long lived session I agree that it might feel better if the created 
session was closed (disconnected).to start with. I guess the choosen path is 
chosen due to the "normal handling" of session which is short lived.

________________________________________
Från: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
 [EMAIL 
PROTECTED]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>]
 f&#246;r Joe [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]><mailto:[EMAIL 
PROTECTED]<mailto:[EMAIL PROTECTED]>><mailto:[EMAIL PROTECTED]<mailto:[EMAIL 
PROTECTED]><mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>>>]
Skickat: den 1 oktober 2008 23:04
Till: nhusers
Ämne: [nhusers] Understanding how NH handles database connections

I am trying to understand how NH handles the actual 
ADO.NET<http://ADO.NET><http://ADO.NET><http://ADO.NET>
connection.

For example, when I request ISession.Connection, I get an OPEN
IDbConnection. The connection appears to stay open until
ISession.Close is called.

Is this the expected behavior? I was trying to use the ADO connection
provided by NH and was surprised to find it already opened. I was
expecting to have to open and close the connection.

If I need to use the connection from ISession, should I not worry
about opening and closing it?

Thanks,
Joe






--
Fabio Maulo







--
Fabio Maulo









--
Fabio Maulo


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to