/// <summary>
 /// 获取数据库中所有存储过程
 /// </summary>
 /// <returns></returns>
 public Task <IEnumerable <Procedure> > GetProcedures()
 {
     return(Task.Factory.StartNew(() =>
     {
         using (var dbConnection = CreateDbConnection())
         {
             var sql = MySqlSQL.MySqlQueryProcedures(dbConnection.Database);
             return dbConnection.ExecuteModels <Procedure>(sql);
         }
     }));
 }
 /// <summary>
 /// 获取表中的所有列
 /// </summary>
 /// <param name="tableName"></param>
 /// <returns></returns>
 public Task <IEnumerable <Column> > GetColumns(string tableName)
 {
     return(Task.Factory.StartNew((_tableName) =>
     {
         using (var dbConnection = CreateDbConnection())
         {
             var sql = MySqlSQL.MySqlQueryTableColumns(dbConnection.Database, (string)_tableName);
             return dbConnection.ExecuteModels <Column>(sql);
         }
     }, tableName));
 }
 /// <summary>
 /// 获取数据库中所有外键关系
 /// </summary>
 /// <returns></returns>
 public Task <IEnumerable <ForeignKey> > GetForeignKeys()
 {
     return(Task.Factory.StartNew(() =>
     {
         using (var dbConnection = CreateDbConnection())
         {
             var sql = MySqlSQL.MySqlQueryForeignKeys(dbConnection.Database);
             return dbConnection.ExecuteModels <ForeignKey>(sql);
         }
     }));
 }
        /// <summary>
        /// 获取存储过程参数列表
        /// </summary>
        /// <param name="procedureName"></param>
        /// <returns></returns>
        public Task <IEnumerable <ProcedureColumn> > GetProcedureColumns(string procedureName)
        {
            return(Task.Factory.StartNew((_procedureName) =>
            {
                var name = (string)_procedureName;

                using (var dbConnection = CreateDbConnection())
                {
                    var sql = MySqlSQL.MySqlQueryProcedureColumns(name);
                    return dbConnection.ExecuteModels <ProcedureColumn>(sql);
                }
            }, procedureName));
        }
 /// <summary>
 /// 获取视图的脚本
 /// </summary>
 /// <param name="viewName"></param>
 /// <returns></returns>
 public Task <string> GetViewScript(string viewName)
 {
     return(Task.Factory.StartNew((_viewName) =>
     {
         var name = (string)_viewName;
         using (var dbConnection = CreateDbConnection())
         {
             var sql = MySqlSQL.MySqlQueryViewScript(name);
             var ret = dbConnection.ExecuteScalar(sql);
             if (ret == null)
             {
                 return string.Empty;
             }
             return (string)ret;
         }
     }, viewName));
 }
 /// <summary>
 /// 获取存储过程的脚本
 /// </summary>
 /// <param name="procedureName"></param>
 /// <returns></returns>
 public Task <string> GetProcedureScript(string procedureName)
 {
     return(Task.Factory.StartNew((_procedureName) =>
     {
         var name = (string)_procedureName;
         using (var dbConnection = CreateDbConnection())
         {
             var sql = MySqlSQL.MySqlQueryProcedureScript(name);
             var dataTable = dbConnection.ExecuteDataTable(sql);
             if (dataTable.Rows.Count == 0)
             {
                 throw new Exception($"No procedure named '{procedureName}'");
             }
             var script = dataTable.Rows[0]["Create Procedure"];
             return (string)script;
         }
     }, procedureName));
 }