I'm more of a WinForms developer but I would think that a singleton for your
database connection in a Web Application would be a bad idea.... my
understanding is that by default IIS will service 10 threads at a time so
now you have 10 threads fighting over that database connection.. assuming
it's even thread safe.  Am I missing something here?

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®  http://www.develop.com

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

Reply via email to