Tutorial :Is connection pooling working correctly in Subsonic?


I am getting reports that connection pooling is not working in the Subsonic orm when used with sql server on a remote machine. I'm not sure how they are monitoring this, maybe with the profiler.

Subsonic opens late, closes early as you are supposed to do in an orm layer, but is there any problem with the implementation that would cause too many connections?


There is a way for a connection to remain open when using SubSonic. Many people assume that when you load a collection the reader will be closed for you - but it's not (a class should never act on another class without permission). There is a method called "LoadAndCloseReader()" just for this reason.

If you could find out more that would be great.


Does this mean that SubSonic's connections are persistent by default?


I'm not sure about the earlier versions, but in 2.1, AbstractList.Load() already uses LoadAndCloseReader(rdr) wrapped in a using statement.


This is something i only recently discovered myself after having similar issues.

As Rob said it should not be used like this:

MyTableCollection objCol = new MyTableCollection().Load();  

it should be used like:

MyTableCollection objCol = new MyTableCollection();  objCol.LoadAndCloseReader(MyTable.FetchAll());  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »