protected override void OnTransactionCompleted(TransactionEventArgs args)
        {
            GraphWithTransaction graph = GraphWithTx;

            lock (graph)
            {
                DbTransactions transactions;

                if (graph.TryGetValue(args.Transaction, out transactions))
                {
                    try
                    {
                        lock (transactions)
                        {
                            foreach (KeyValuePair <ReferenceConnection, DbTransaction> item in transactions)
                            {
                                if (args.Transaction.TransactionInformation.Status == TransactionStatus.Committed)
                                {
                                    item.Value.Commit();
                                }
                                else
                                {
                                    item.Value.Rollback();
                                }

                                ReferenceConnection refConnection = item.Key;

                                if (refConnection.ReferenceCount == 0)
                                {
                                    try
                                    {
                                        refConnection.Connection.Close();
                                    }
                                    finally
                                    {
                                        GraphWithoutTx.Remove(refConnection.Name);
                                    }
                                }

                                WriteTraceInfo(refConnection.Connection.DataSource + "." + refConnection.Connection.Database
                                               + "[" + DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff") + "]",
                                               " Close Connection ");
                            }
                        }
                    }
                    finally
                    {
                        graph.Remove(args.Transaction);
                    }
                }
            }
        }
        /// <summary>
        /// 数据库事务结束时触发的事件
        /// </summary>
        /// <param name="args">事件对象</param>
        protected override void OnTransactionCompleted(TransactionEventArgs args)
        {
            GraphWithTransaction graph = GraphWithTx;

            lock (graph)
            {
                Connections connections;

                if (graph.TryGetValue(args.Transaction, out connections))
                {
                    try
                    {
                        lock (connections)
                        {
                            foreach (KeyValuePair <string, ReferenceConnection> item in connections)
                            {
                                DbConnection connection = item.Value.Connection;

                                if (connection.State != ConnectionState.Closed)
                                {
                                    connection.Close();

                                    WriteTraceInfo(connection.DataSource + "." + connection.Database
                                                   + "[" + SNTPClient.AdjustedTime.ToString("yyyyMMdd HH:mm:ss.fff") + "]",
                                                   " Close Connection ");
                                }
                            }
                        }
                    }
                    finally
                    {
                        graph.Remove(args.Transaction);
                    }
                }
            }
        }