private ContextualSqlException BuildContextException(SqlException ex)
        {
            string context;

            try
            {
                StringBuilder builder = new StringBuilder();

                builder.AppendLine("Query:");
                builder.AppendLine(this.sqlCommand.CommandText);
                builder.AppendLine();

                builder.AppendLine("Parameters:");

                Func <object, string> isNull = (value) => (value == null || value == DBNull.Value ? "(null)" : Convert.ToString(value));

                this.sqlCommand.Parameters.Cast <SqlParameter>().ToList().ForEach(parameter =>
                {
                    builder.Append(parameter.ParameterName).Append(" = ").Append(isNull(parameter.Value)).AppendLine();
                });

                context = builder.ToString();
            }
            catch (Exception ex2)
            {
                DataLibrary.LoggingCallback(ex2);
                context = ("Exception building context:" + Environment.NewLine + DataLibrary.BuildExceptionMessage(ex2));
            }

            return(new ContextualSqlException(ex.Message, ex, context));
        }
        public static string GetProcedureText(string procedureName, SqlConnection conn = null)
        {
            bool externalConnection = conn != null;

            try
            {
                if (conn == null)
                {
                    conn = DataLibrary.GetConnection();
                }
                using (UnitySqlCommand cmd = new UnitySqlCommand(conn, GetProcedureTextSql))
                {
                    cmd.Prepare();
                    cmd.Parameters["@ProcName"] = procedureName;
                    return(cmd.ExecuteScalar <string>(String.Empty));
                }
            }
            finally
            {
                if (externalConnection && conn != null)
                {
                    conn.Dispose();
                }
            }
        }
 public BaseCommand(SqlConnection connection, string procedureName)
 {
     this.procedureName = procedureName;
     if (connection == null)
     {
         connection = DataLibrary.GetConnection();
     }
     else
     {
         externalConnection = true;
     }
     this.sqlConnection = connection;
 }