public override void Close() { //关闭数据读取器 _reader.Close(); //退出环境事务的读取临界区(即重置环境事务的读取标记) var disconnectRequired = _session.ExitRead(); /* * 如果数据会话已经完结,则需要关闭释放对应的数据连接。 * 因为当会话完成(提交或回滚)时,如果该会话正处于读取状态(即位于读取临界区内), * 完成操作是不会关闭数据连接的,因为读取操作还需要使用它,即该数据连接由本读取器进行关闭。 */ if (disconnectRequired && _session.IsCompleted) { var connection = _connection; if (connection != null) { connection.Dispose(); } } }