我正在为C#设计数据库包装。 下面是两个选择,我有:C#数据库包装设计
选项A:
class DBWrapper:IDisposable
{
private SqlConnection sqlConn;
public DBWrapper()
{
sqlConn = new SqlConnection("my connection string");
sqlConn.Open();
}
public DataTable RunQuery(string Sql)
{
implementation......
}
public Dispose()
{
if(sqlConn != null)
sqlConn.Close();
}
}
选项B:
class DBWrapper
{
public DBWrapper()
{
}
public DataTable RunQuery(string Sql)
{
SqlConnection sqlConn = new SqlConnection("my connection string");
.....implementation......
sqlConn.Close();
}
}
对于选项时,类实例化打开的连接。因此,无论调用者调用RunQuery多少次,连接总是准备就绪。但是,如果应用程序在应用程序的早期初始化DBWrapper,则连接将会刚刚打开,在应用程序完成之前什么也不做。另外,它可能会在执行过程中实例化许多DBWrapper。所以,这有点浪费资源。
对于选项B,它没有A选项的问题选项,但每次调用者调用RunQuery时都必须打开和关闭一个新连接。我不确定这会对表演造成多大的伤害。
请分享您的专业知识。谢谢你的阅读。
他们往往会在这里得到一个坏名字,但有一个Singleton设计模式的阅读,这是我唯一一次使用单身人士 – acqu13sce 2010-08-24 05:56:01
@ acqu13sce:为什么坏名字?模拟能力的原因是什么? – kbrimington 2010-08-24 06:00:29
只是我通过阅读包括这个社区维基阅读一些评论http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons 我个人认为他们有他们的位置,但也许做被过度使用 – acqu13sce 2010-08-24 06:11:16