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® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com