Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ADO.NET命令和连接对象(odp.NET)的寿命_.net_Ado.net_Odp.net - Fatal编程技术网

ADO.NET命令和连接对象(odp.NET)的寿命

ADO.NET命令和连接对象(odp.NET)的寿命,.net,ado.net,odp.net,.net,Ado.net,Odp.net,我正在更新我们公司用来调用Oracle数据库存储过程的数据访问库。该库当前允许调用应用程序使用单个OracleCommand(IDbCommand)对象和单个OracleConnection(IDBConnection)进行多个调用。这意味着调用者将为调用添加参数、进行调用、清除参数并重复。完成后,使用者应用程序调用dispose来清理所有内容 我可以通过在库中使用“using”语句来确保在每次调用后清除命令和连接对象,从而使事情变得更清晰,但这意味着上述功能将丢失,并且每次调用都将创建一个新的

我正在更新我们公司用来调用Oracle数据库存储过程的数据访问库。该库当前允许调用应用程序使用单个OracleCommand(IDbCommand)对象和单个OracleConnection(IDBConnection)进行多个调用。这意味着调用者将为调用添加参数、进行调用、清除参数并重复。完成后,使用者应用程序调用dispose来清理所有内容

我可以通过在库中使用“using”语句来确保在每次调用后清除命令和连接对象,从而使事情变得更清晰,但这意味着上述功能将丢失,并且每次调用都将创建一个新的命令/连接。我在我找到的大多数例子中都看到了这一点,但它们通常只是简单的例子


我的问题:允许命令和/或连接在调用之间保持是否值得?每次重新创建它们是否过于昂贵?

这与可伸缩性有关。创建和处理命令的成本很低。保持连接打开是代价高昂的部分。如果有1000个活动客户端持有1000个打开的连接,那么这就是数据库的负载。我经常握住连接对象,但只是关闭连接。这样可以减轻数据库的负担,并且在.NET中保存连接对象的开销非常小。在典型的终端用户程序中,一个连接只使用了一小部分时间,因此在不使用时关闭连接这1000个用户可能只有10个活动连接。现在,像数据加载器这样的程序使用连接1/2的时间,然后保持连接打开。

同意Blam。
连接对象应该使用数据访问类创建,每个执行数据库调用的方法都应该打开和关闭连接对象,除非在方法之间有某种事务控制,但总的来说,对于简单的CRUD操作,我建议您采用这种方法,请注意OracleConnection对象在默认情况下实际上是一个连接池。因此,您可以让它为您实际打开和关闭连接,同时保持良好的性能。有许多连接字符串属性可用于控制池的大小和连接的生存期

克里斯蒂安·谢伊

神谕