gpt4 book ai didi

c# - ODP.NET 连接池 : How to tell if a connection has been used

转载 作者:行者123 更新时间:2023-11-30 22:34:23 25 4
gpt4 key购买 nike

我正在修改 Winforms 应用程序以使用连接池,以便可以在后台线程中进行数据访问。业务逻辑是在 PL/SQL 中实现的,为了使用业务逻辑,必须调用几个与安全相关的存储过程。

我需要的是一种无需往返数据库即可判断连接是否已被使用的方法。我不认为我可以在 HashSet 中跟踪它们,因为我怀疑 Equals 甚至 ReferenceEquals 是否可以依赖。有什么想法吗?

编辑:

需要说明的是,我打算使用 ODP.NET 的内置连接池机制。如果我推出自己的连接池,那么跟踪哪些连接是新连接哪些是已用连接将非常微不足道。

最佳答案

ODP.NET 提供的连接池是完全不透明的。也就是说,它并没有像我希望的那样泄漏——无法知道某个连接是以前使用过的还是全新的。然而,它是另一种方式的泄漏抽象:任何 session 状态(例如,包范围变量, session 范围)在连接的使用之间被保留。由于这是一个关于在不访问数据库的情况下确定连接的新旧状态的问题,答案是使用 ODP.NET 的内置连接池根本无法完成。 p>

还有两个选择:

  1. 创建一个连接池实现,在创建每个新连接时提供该信息或执行用户定义的初始化;或
  2. 执行往返数据库以确定连接的旧状态与新状态。

关于c# - ODP.NET 连接池 : How to tell if a connection has been used,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com