4

伙计们,我将使用 Enterprise Library (4.1),尤其是 DAAB。这是我有问题:

  1. 什么是最好的方法,为什么:

    • 每次需要运行 DbCommand 时,我都会使用 DatabaseFactory.CreateDatabase(); 创建数据库实例。

    • 我有一个带有实例数据库的基类(使用相同的 CreateDatabase() 静态方法)和返回实例数据库的公共属性之类的东西。

  2. 创建数据库类的实例有多“重”或快/慢?如果每次需要 DbCommand 时我都这样做会怎样?

谢谢你。

4

1 回答 1

0

这算不上问题。创建数据库类的开销很低。

但是,实际创建数据库连接的开销很大,这就是 Windows 使用连接池的原因。简而言之,进程第一次创建数据库连接时,它会在连接池中查找具有完全相同连接字符串的现有连接。如果找不到,它会创建一个新的(昂贵的操作)。当进程关闭它并让它超出范围时,它实际上并没有关闭与数据库的连接,而是将其放入连接池中。直到同一个进程使用相同的连接字符串创建另一个连接为止。然后它会为您提供连接池中已经存在的一个。

您可以关闭连接池(通过连接字符串中的设置),但这通常是一个非常糟糕的主意。

于 2014-01-31T14:32:15.223 回答