Amnesia.Session.CloseConnections C# (CSharp) Method

CloseConnections() static private method

Closes all database connections associated with the session.
static private CloseConnections ( ILog log ) : void
log ILog
return void
        internal static void CloseConnections(ILog log)
        {
            List<AmnesiaDbConnection> oldConnections = new List<AmnesiaDbConnection>();

            lock (connections)
            {
                foreach (AmnesiaDbConnection c in connections.Values)
                    oldConnections.Add(c);

                connections.Clear();
            }

            foreach (AmnesiaDbConnection connection in oldConnections)
            {
                try
                {
                    using (LockConnection(connection))
                    {
                        if (connection.Real.State == ConnectionState.Open)
                        {
                            log.Write("Closing: " + connection.Real.ConnectionString);
                            connection.Real.Close();
                        }
                        else
                        {
                            log.Write("Already closed: " + connection.Real.ConnectionString);
                        }
                    }
                }
                catch { }
            }
        }

Usage Example

Beispiel #1
0
        /// <summary>
        /// Calls must handle concurrency control
        /// </summary>
        static void Rollback(ILog log)
        {
            // mark the session as ended before doing any rollback work
            Session.ID = Guid.Empty;
            Session.IsRollbackPending = false;
            Session.CloseConnections(log);

            log.Write("Aborting transaction");
            Session.Transaction.Rollback();
            Session.Transaction.Dispose();
            Session.Transaction = null;
        }