public ActionResult GeneratCode()
        {
            var inModel = new CodeMakerGeneratCodeIn();

            UpdateModel(inModel);
            try
            {
                inModel.Lang             = HttpUtility.UrlDecode(inModel.Lang);
                inModel.ClassName        = HttpUtility.UrlDecode(inModel.ClassName);
                inModel.ConnectionString = HttpUtility.UrlDecode(inModel.ConnectionString);
                inModel.Package          = HttpUtility.UrlDecode(inModel.Package);
                inModel.Table            = HttpUtility.UrlDecode(inModel.Table);
                inModel.DbType           = HttpUtility.UrlDecode(inModel.DbType);

                JlDatabaseType databaseType;
                switch (inModel.DbType.ToLower())
                {
                case "mysql": databaseType = JlDatabaseType.MySql; break;

                case "postgresql": databaseType = JlDatabaseType.PostgreSql; break;

                case "sqlserver": databaseType = JlDatabaseType.SqlServer; break;

                default: databaseType = JlDatabaseType.MySql; break;
                }

                var databaseColumns = CommonMethod.GetDatabaseColumns(inModel.ConnectionString, inModel.Table, (JlDatabaseType)Enum.Parse(typeof(JlDatabaseType), inModel.DbType));

                var outModel = new CodeMakerGeneratCodeOut
                {
                    CodeMakerGeneratCodeIn = inModel,
                    FieldDescriptions      = databaseColumns,
                    databaseType           = databaseType
                };

                #region 通过反射调用方法

                var type = Type.GetType(JlConfig.GetValue <string>("ReflectClass") + "_" + inModel.Lang);
                //声明创建当前类实例
                var model  = Activator.CreateInstance(type);
                var method = type.GetMethod(inModel.Type);

                var result = method.Invoke(model, new object[] { outModel }).ToString();

                #endregion

                return(new JlJsonResult()
                {
                    Content = JlJson.ToJson(result)
                });
            }
            catch (Exception ex)
            {
                return(new JlJsonResult()
                {
                    Content = JlJson.ToJson(new { Message = ex.Message })
                });
            }
        }
        public void DownloadAllFile()
        {
            var inModel = new CodeMakerGeneratCodeIn();

            UpdateModel(inModel);

            inModel.Lang             = HttpUtility.UrlDecode(inModel.Lang);
            inModel.ClassName        = HttpUtility.UrlDecode(inModel.ClassName);
            inModel.ConnectionString = HttpUtility.UrlDecode(inModel.ConnectionString);
            inModel.Package          = HttpUtility.UrlDecode(inModel.Package);
            inModel.DbType           = HttpUtility.UrlDecode(inModel.DbType);
            inModel.Extension        = HttpUtility.UrlDecode(inModel.Extension);
            JlDatabaseType databaseType;

            switch (inModel.DbType.ToLower())
            {
            case "mysql": databaseType = JlDatabaseType.MySql; break;

            case "postgresql": databaseType = JlDatabaseType.PostgreSql; break;

            case "sqlserver": databaseType = JlDatabaseType.SqlServer; break;

            default: databaseType = JlDatabaseType.MySql; break;
            }

            var databaseTables = CommonMethod.GetDatabaseTables(inModel.ConnectionString, (JlDatabaseType)Enum.Parse(typeof(JlDatabaseType), inModel.DbType));

            var zipDir      = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + JlConfig.GetValue <string>("SaveFilePath") + "zip\\";
            var zipFileName = JlGuid.NewGuid();
            var pathName    = zipDir + zipFileName + "\\";

            if (databaseTables.Any())
            {
                if (!Directory.Exists(zipDir))
                {
                    Directory.CreateDirectory(zipDir);
                }

                Directory.CreateDirectory(pathName);
            }

            databaseTables.ForEach(table =>
            {
                var databaseColumns = CommonMethod.GetDatabaseColumns(inModel.ConnectionString, table, (JlDatabaseType)Enum.Parse(typeof(JlDatabaseType), inModel.DbType));

                var outModel = new CodeMakerGeneratCodeOut
                {
                    CodeMakerGeneratCodeIn = inModel,
                    FieldDescriptions      = databaseColumns,
                    databaseType           = databaseType
                };
                #region 通过反射调用方法
                var type = Type.GetType(JlConfig.GetValue <string>("ReflectClass") + "_" + inModel.Lang);
                //声明创建当前类实例
                var model  = Activator.CreateInstance(type);
                var method = type.GetMethod(inModel.Type);

                var result = method.Invoke(model, new object[] { outModel }).ToString();

                #endregion

                //下载文件到文件夹内
                var fileName = string.Empty;

                if (inModel.Lang.ToLower() == "dotnet")
                {
                    if (inModel.Type.ToLower().StartsWith("dao"))
                    {
                        fileName = table + "Dao.cs";
                    }
                    else
                    {
                        fileName = table + ".cs";
                    }
                }
                else
                {
                    if (inModel.Type.ToLower().EndsWith("xml"))
                    {
                        fileName = table + "Mapper.xml";
                    }
                    else if (inModel.Type.ToLower().EndsWith("mapper"))
                    {
                        fileName = table + "Mapper.java";
                    }
                    else if (inModel.Type.ToLower().StartsWith("dao"))
                    {
                        fileName = table + "Dao.java";
                    }
                    else
                    {
                        fileName = table + ".java";
                    }
                }

                var fullName = pathName + fileName;
                if (!System.IO.File.Exists(fullName))
                {
                    System.IO.File.WriteAllText(fullName, result);
                }
            });

            if (databaseTables.Any())
            {
                ZipUtil.ZipDirectory(pathName, zipDir, zipFileName);
                new DirectoryInfo(pathName).Delete(true);
            }
            FileStream fis = new FileStream(zipDir + zipFileName + ".zip", FileMode.Open);
            Response.Clear();
            Response.Buffer      = true;
            Response.ContentType = "application/x-zip-compressed";
            Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip");
            byte[]       pReadByte = new byte[0];
            BinaryReader r         = new BinaryReader(fis);
            r.BaseStream.Seek(0, SeekOrigin.Begin);    //将文件指针设置到文件开
            pReadByte = r.ReadBytes((int)r.BaseStream.Length);
            Response.BinaryWrite(pReadByte);
            Response.Flush();
            Response.End();
        }