适当的设计,以跨静态类共享数据库连接?

时间:2009-04-21 15:28:22

标签: c# database connection-pooling

我有一个带有许多静态实用程序类的c#dll。他们都需要数据库访问,目前每个类都有自己的连接。这是一个麻烦,我想要一个连接的“提供者”,所以一个类可以做类似于ConnProvider.Query(...)的东西,其中ConnProvider是一个可由所有实用程序类访问的静态类。我想ConnProvider必须管理某种类型的连接池,但我不完全确定这是否是实现此方法的正确方法,如果是这样,内部结构将如何。我在这里走在正确的轨道上吗?这不是基于网络的,线程安全不是必不可少的(但对未来会很好),并且只有少数应用程序/机器会使用这个dll,如果这有助于简化它。

4 个答案:

答案 0 :(得分:2)

您不应该编写自己的连接池。框架是非常好的。

您编写的任何连接提供程序实用程序应该只是使用您获得的任何配置信息创建连接。基本上它只是封装查询字符串。

每当您执行查询时,请调用提供程序以创建连接,执行工作并关闭连接。让框架处理池化物理连接。

答案 1 :(得分:0)

在您的情况下是否可以将所有辅助类从具有连接的ConnectionBase中继承子类?

答案 2 :(得分:0)

让您的“ConnProvider”为每个查询创建新连接,让ADO.NET和您的RDBMS管理连接池。它们已经过设置和优化,代表您这样做。

答案 3 :(得分:0)

不要尝试自己处理连接池。 .NET肯定比你以前更好。您可以将其作为连接的某种单例模式db-class来使用。