C# 提供对数据库处理程序的全局访问
我正在用C#开发一个应用程序(但这与此无关,因为我不想使用任何语言工具),我需要处理与数据库的连接。我将避免在每个方法中显式创建连接,如:C# 提供对数据库处理程序的全局访问,c#,persistence,C#,Persistence,我正在用C#开发一个应用程序(但这与此无关,因为我不想使用任何语言工具),我需要处理与数据库的连接。我将避免在每个方法中显式创建连接,如: private void btnAnteprima_Click(object sender, EventArgs e) { SqlConnection myConnection = new SqlConnection("user id=***;" + "password=***;server=***;" +
private void btnAnteprima_Click(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection("user id=***;" +
"password=***;server=***;" +
"database=***");
myConnection.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select * from *** where IDCliente=*", myConnection);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
MessageBox.Show(myReader["xyz"].ToString());
}
}
我想:
private void btnAnteprima_Click(object sender, EventArgs e)
{
SqlReader myReader = DbFactory.ExecuteQuery("select * from *** where IDCliente=*");
while (myReader.Read())
{
MessageBox.Show(myReader["xyz"].ToString());
}
}
据我所知,单例模式的使用在性能方面是无用的,甚至是有害的。我在工厂模式中徘徊以实现这一点,但我不知道如何做到最好。你有这样做的例子吗?我不想重新发明轮子,我只想使用正确的设计模式,了解轮子后面的内容。看看Microsoft Enterprise Library的数据访问块
我很确定你使用C#的事实是相关的。每种语言都有自己的数据库抽象API和依赖注入框架,很难给出与语言无关的最佳解释。singleton反模式之所以不是一种不可测试模式,不是因为它的性能,而是因为它所导致的耦合和缺乏可测试性。我知道这一点,但我会将我的知识推广到框架API和工具之外……这是一种新的说法“我想重新发明轮子,而不是使用标准方式”?我不想重新发明轮子,我只想知道轮子是如何工作的。然后用C#和你的持久性框架来标记这个问题,因为每种语言/框架都有自己的轮子。