Beispiel #1
0
            public override void Close()
            {
                //关闭数据读取器
                _reader.Close();

                //退出环境事务的读取临界区(即重置环境事务的读取标记)
                var disconnectRequired = _session.ExitRead();

                /*
                 * 如果数据会话已经完结,则需要关闭释放对应的数据连接。
                 * 因为当会话完成(提交或回滚)时,如果该会话正处于读取状态(即位于读取临界区内),
                 * 完成操作是不会关闭数据连接的,因为读取操作还需要使用它,即该数据连接由本读取器进行关闭。
                 */
                if (disconnectRequired && _session.IsCompleted)
                {
                    var connection = _connection;

                    if (connection != null)
                    {
                        connection.Dispose();
                    }
                }
            }