Regarding ASP.NET, I'm of the school of thought that database
connections be created at function level; as in, created and destroyed
many many times (if necessary) throughout the page life-cycle.

Just out of interest, is there *any* situation of school of thought
where a single application-level connection to the database would be
better?

Curiously yours,

Ben

On 10/16/07, Mike Andrews <[EMAIL PROTECTED]> wrote:
> This is not the place for a singleton and the singleton is not implemented
> correctly since it doesn't take into account any race conditions that might
> occur with a multi-threaded app such as asp.net.  Also you would not want to
> dispose of the connection in the singleton since that defeats the purpose of
> the singleton.
> The connection should be created and destroyed when needed and not kept live
> by using the singleton.
>
>
> On 10/16/07, Abhijit Gadkari <[EMAIL PROTECTED]> wrote:
> >
> > We are writing an ASP.NET application. We have used singleton for
> > instantiating a database connection as explained in the following code
> > sample.
> >
> >
> >
> > Design thought was to use only one instance of MyDb across all the pages
> > in
> > this web application. Is this a correct singleton implementation for
> > Asp.NETweb application for managing database connection? In fact, this
> > code got C –
> > or D in our internal code review. Don't know why? Any idea on how to
> > improve
> > this code to A level.
> >
> >
> >
> > public sealed class AppDbProvider : IDisposable
> >
> >    {
> >
> >        public static readonly AppDbProvider instance = new
> > AppDbProvider();
> >
> >
> >
> >        private readonly MyDb _d = new MyDb(ConfigurationManager
> > .ConnectionStrings["my_connection"].ConnectionString,
> >
> >                               ConfigurationManager.ConnectionStrings[
> > "my_connection"].ProviderName);
> >
> >
> >
> >        public MyDb GetDbConnection()
> >
> >        {
> >
> >            if (_d != null)
> >
> >                return _d;
> >
> >            else
> >
> >                throw new Exception("Problem with Database Connection in
> > AppDbProvider.");
> >
> >        }
> >
> >
> >
> >        #region IDisposable Members
> >
> >
> >
> >        public void Dispose()
> >
> >        {
> >
> >            if (_d != null)
> >
> >                _d.Dispose();
> >
> >
> >
> >                Dispose();
> >
> >
> >
> >        }
> >
> >
> >
> >        #endregion
> >
> >    }
> >
> >
> >
> > Now in code behind file, we have following code
> >
> >
> >
> >
> >
> > public partial class CreatePage
> >
> >    {
> >
> > private AmgDb _d;
> >
> >
> >
> > try
> >
> > {
> >
> >     _d = AppDbProvider.instance.GetDbConnection();
> >
> > }
> >
> > Catch (Exception exce)
> >
> > {
> >
> > Response.write(exce.message);
> >
> > }
> >
> >
> >
> >     }
> >
> >
> >
> > And in the end, in the page unload event we have following cleanup code
> >
> >
> >
> > protected void Page_Unload(object sender, EventArgs e)
> >
> >        {
> >
> >            if (_d != null)
> >
> >            {
> >
> >                _d = null;
> >
> >            }
> >
> >        }
> >
> > ===================================
> > This list is hosted by DevelopMentor(r)  http://www.develop.com
> >
> > View archives and manage your subscription(s) at
> > http://discuss.develop.com
> >
>
> ===================================
> This list is hosted by DevelopMentor(r)  http://www.develop.com
>
> View archives and manage your subscription(s) at http://discuss.develop.com
>


-- 
http://www.flickr.com/photos/benbenbenbenben

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to