Amnesia.Session.GetConnection C# (CSharp) Method

GetConnection() public static method

Gets or creates a connection that can be used with the current session. If there is no active session, null is returned. This connection can and should be shared across threads for transaction rollbacks to work properly.
public static GetConnection ( string connectionString, DbConnection>.Func createConnection ) : IDbConnection
connectionString string
createConnection DbConnection>.Func
return IDbConnection
        public static IDbConnection GetConnection(string connectionString, Func<string, DbConnection> createConnection)
        {
            // Prevent rouge threads from access the shared connection
            Session.Tracker.AssertActivityStarted();

            string key;

            if (Transaction.TransactionInformation.DistributedIdentifier != Guid.Empty)
                key = Transaction.TransactionInformation.DistributedIdentifier.ToString();
            else
                key = Transaction.TransactionInformation.LocalIdentifier;

            key += "|" + connectionString;

            AmnesiaDbConnection connection = null;
            lock (connections)
            {
                if (!connections.TryGetValue(key, out connection))
                {
                    connection = new AmnesiaDbConnection(Transaction, createConnection(connectionString));
                    connections[key] = connection;
                }
            }

            return connection;
        }