/// <summary>
        /// 1.后台普通的显示cshtml文件【多个文件】
        ///       如果是大文本列,需生成@Html.Raw(ViewBag.OnlineEditorHtml),默认不生成
        /// [模板文件]:view/view.txt
        /// [生成文件名称]:ClassName
        /// [生成文件后缀名]:.cshtml
        /// </summary>
        private void CreateNormalView()
        {
            string ClassName = "Admin";
            string InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Content, Content_New, OnlineEditorHtml = "", ComboTreeInitHtml = "";
            string Relation_Table_Name;
            string Column_Name, Column_Type, Column_Length;

            foreach (string Table_Name in TableList)
            {
                //读取原文件内容到内存
                Template_Name     = @"AutoCode/Model/view/view.txt";
                Content           = UtilFile.ReadFile2String(Template_Name);
                ClassName         = Table_Name;
                ComboTreeInitHtml = "";
                OnlineEditorHtml  = "";
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }

                    InstanceName = UtilString.LcFirst(ClassName);

                    Content_New = Content.Replace("{$ClassName}", ClassName);
                    Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                    Content_New = Content_New.Replace("{$InstanceName}", InstanceName);

                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                    {
                        Column_Name         = entry.Key;
                        Column_Type         = entry.Value["Type"];
                        Column_Length       = entry.Value["Length"];
                        Relation_Table_Name = Column_Name.Replace("_ID", "");
                        if (Relation_Table_Name.ToUpper().Equals("PARENT"))
                        {
                            ComboTreeInitHtml = @"
    <script type=""text/javascript"" src=""@Url.Content(""~/Content/common/js/ajax/ext/shared/components/ComboBoxTree.js"")""></script>";
                        }

                        int iLength = UtilNumber.Parse(Column_Length);
                        if (ColumnIsTextArea(Column_Name, Column_Type, iLength))
                        {
                            OnlineEditorHtml = "	@Html.Raw(ViewBag.OnlineEditorHtml)";
                        }
                    }

                    Content_New = Content_New.Replace("{$OnlineEditorHtml}", OnlineEditorHtml);
                    Content_New = Content_New.Replace("{$ComboTreeInitHtml}", ComboTreeInitHtml);

                    //存入目标文件内容
                    UtilFile.WriteString2FileEncodingGbk(Save_Dir + ClassName + ".cshtml", Content_New);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 1.生成核心业务控制器
        /// [如果是在线编辑器需生成:this.ViewBag.OnlineEditorHtml],默认不生成[1个文件]
        /// [模板文件]:action/homecontroller.txt
        /// 生成文件名称:HomeController.cs
        /// </summary>
        private void CreateHomeController()
        {
            string ClassName = "Admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Unit_Template, Content, MainContent, Textarea_Text;
            string Column_Name, Column_Type, Column_Length;

            //读取原文件内容到内存
            Template_Name = @"AutoCode/Model/action/homecontroller.txt";
            Content       = UtilFile.ReadFile2String(Template_Name);
            MainContent   = "";
            foreach (string Table_Name in TableList)
            {
                ClassName = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }

                    Unit_Template = @"
        // 控制器:{$Table_Comment}
        // GET: /Home/{$ClassName}
        public ActionResult {$ClassName}()
        {{$Textarea_Text}
            return View();
        }
                ";
                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    Textarea_Text = "";
                    foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                    {
                        Column_Name   = entry.Key;
                        Column_Type   = entry.Value["Type"];
                        Column_Length = entry.Value["Length"];
                        int iLength = UtilNumber.Parse(Column_Length);
                        if (ColumnIsTextArea(Column_Name, Column_Type, iLength))
                        {
                            Textarea_Text += "\"" + Column_Name + "\",";
                        }
                    }
                    if (!string.IsNullOrEmpty(Textarea_Text))
                    {
                        Textarea_Text = Textarea_Text.Substring(0, Textarea_Text.Length - 1);
                        Textarea_Text = @"
            this.ViewBag.OnlineEditorHtml = this.Load_Onlineditor(" + Textarea_Text + ");";
                    }
                    Unit_Template = Unit_Template.Replace("{$ClassName}", ClassName);
                    Unit_Template = Unit_Template.Replace("{$Textarea_Text}", Textarea_Text);

                    MainContent += Unit_Template.Replace("{$Table_Comment}", Table_Comment);
                }
            }
            Content = Content.Replace("{$MainContent}", MainContent);
            //存入目标文件内容
            UtilFile.WriteString2File(Save_Dir + "HomeController.cs", Content);
        }
Exemple #3
0
        /// <summary>
        ///  1.Core/Service服务层所有的服务业务类|接口【多个文件】
        /// [模板文件]:service/service.txt|service/iservice.txt
        /// [生成文件名称]:"Service"+ClassName|"IService"+ClassName
        /// [生成文件后缀名]:.cs
        /// </summary>
        private void CreateNormalService()
        {
            string ClassName = "Admin";
            string InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Content, Content_New;
            string ID_Type, ID_Default_Value;

            foreach (string Table_Name in TableList)
            {
                //读取原文件内容到内存
                Template_Name = @"AutoCode/Model/service/iservice.txt";
                Content       = UtilFile.ReadFile2String(Template_Name);
                ClassName     = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }
                    InstanceName = UtilString.LcFirst(ClassName);

                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    Dictionary <string, string> entry = FieldInfo["ID"];
                    if (entry["Type"].Equals("uniqueidentifier"))
                    {
                        ID_Type          = "Guid";
                        ID_Default_Value = "null";
                    }
                    else
                    {
                        ID_Type          = "int";
                        ID_Default_Value = "0";
                    }

                    Content_New = Content.Replace("{$ClassName}", ClassName);
                    Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                    Content_New = Content_New.Replace("{$InstanceName}", InstanceName);
                    Content_New = Content_New.Replace("{$ID_Type}", ID_Type);

                    //存入目标文件内容
                    UtilFile.WriteString2File(Save_Dir + "IService" + ClassName + ".cs", Content_New);

                    //读取原文件内容到内存
                    Template_Name = @"AutoCode/Model/service/service.txt";
                    Content       = UtilFile.ReadFile2String(Template_Name);
                    Content_New   = Content.Replace("{$ClassName}", ClassName);
                    Content_New   = Content_New.Replace("{$Table_Comment}", Table_Comment);
                    InstanceName  = UtilString.LcFirst(ClassName);
                    Content_New   = Content_New.Replace("{$InstanceName}", InstanceName);
                    Content_New   = Content_New.Replace("{$ID_Type}", ID_Type);
                    Content_New   = Content_New.Replace("{$ID_Default_Value}", ID_Default_Value);

                    //存入目标文件内容
                    UtilFile.WriteString2File(Save_Dir + "Service" + ClassName + ".cs", Content_New);
                }
            }
        }
 private static IEnumerable <ExplorerItem> GetTables(string connectionString, string schema)
 {
     using (var tables = new TableInfoList(connectionString, schema))
     {
         return(GetTables(tables));
     }
 }
Exemple #5
0
        private void button1_Click(object sender, EventArgs e)
        {
            string[] lines = File.ReadAllLines(textBox1.Text);
            var tableInfoList = new TableInfoList(lines);
            tableInfoList.CreateResultFiles(FileHelper.GetFolderName(textBox1.Text));

            txtLog.Text = tableInfoList.GetSql();
            MessageBox.Show(@"Все готово, не забудьте обновить модель");
        }
		// TODO: If I had a smarter Linq provider, I might be able to
		public static List<ExplorerItem> GetSchemaAndBuildAssembly(DB2Properties properties, AssemblyName name, ref string nameSpace, ref string typeName, string dllPath)
		{
			var tables = new TableInfoList(properties);
			var schema = new DatabaseExplorerInfoList(tables).ToList();

			var code = new DataContextCodeGenerator(tables, nameSpace, typeName).Generate();
			BuildAssembly(code, name, dllPath);

			return schema;
		}
Exemple #7
0
        /// <summary>
        /// 2.生成上传文件控制器
        /// [模板文件]:action/uploadcontroller.txt
        /// 生成文件名称:UploadController.cs
        /// </summary>
        private void CreateUploadController()
        {
            string ClassName = "Admin";
            string InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Unit_Template, Content, MainContent;

            //读取原文件内容到内存
            Template_Name = @"AutoCode/Model/action/uploadcontroller.txt";
            Content       = UtilFile.ReadFile2String(Template_Name);
            MainContent   = "";
            foreach (string Table_Name in TableList)
            {
                ClassName = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }
                    InstanceName  = UtilString.LcFirst(ClassName);
                    Unit_Template = @"
        /// <summary>
        /// 上传Excel文件:{$Table_Comment}
        /// </summary>
        /// <returns></returns>
        // POST: /Upload/Upload{$ClassName}/
        [HttpPost]
        public ActionResult Upload{$ClassName}(FormCollection form)
        {
            if (Request.Files.Count > 0){
                HttpPostedFileBase file = Request.Files[0];
                string fileName = Path.Combine(Gc.UploadPath, ""attachment"", ""{$InstanceName}"", ""{$InstanceName}"" + UtilDateTime.NowS() + "".xls"");
                file.SaveAs(fileName);

                JObject resultJ = ExtService{$ClassName}.import{$ClassName}(fileName);
                string result = JsonConvert.SerializeObject(resultJ);
                Response.Write(result);
            }else{
                Response.Write(""{'success':false,'data':'上传文件不能为空'}"");
            }
            return null;
        }
                ";
                    Unit_Template = Unit_Template.Replace("{$ClassName}", ClassName);
                    Unit_Template = Unit_Template.Replace("{$InstanceName}", InstanceName);
                    MainContent  += Unit_Template.Replace("{$Table_Comment}", Table_Comment);
                }
            }
            Content = Content.Replace("{$MainContent}", MainContent);
            //存入目标文件内容
            UtilFile.WriteString2File(Save_Dir + "UploadController.cs", Content);
        }
Exemple #8
0
        /// <summary>
        /// 3.Portal 网站主体的ManageService工具类
        /// </summary>
        /// [模板文件]:service/manageservice.txt
        /// 生成文件名称:ManageService.cs
        private void CreateManageService()
        {
            string Content = "";
            string ClassName, InstanceName, Table_Comment, UnitTemplate;
            string ServiceDefine = "", ServiceMethod = "";
            //读取原文件内容到内存
            string Template_Name = @"AutoCode/Model/service/manageservice.txt";

            Content = UtilFile.ReadFile2String(Template_Name);

            foreach (string Table_Name in TableList)
            {
                ClassName     = Table_Name;
                Table_Comment = "";
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }
                }
                InstanceName   = UtilString.LcFirst(ClassName);
                UnitTemplate   = @"
        /// <summary>
        /// {$Table_Comment}服务
        /// </summary>
        private static IService{$ClassName} {$InstanceName}Service;";
                UnitTemplate   = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                UnitTemplate   = UnitTemplate.Replace("{$ClassName}", ClassName);
                UnitTemplate   = UnitTemplate.Replace("{$Table_Comment}", Table_Comment);
                ServiceDefine += UnitTemplate;
                UnitTemplate   = @"
        /// <summary>
        /// 服务:{$Table_Comment}
        /// </summary>
        public static IService{$ClassName} {$ClassName}Service()
        {
            Init();
            if ({$InstanceName}Service == null) {$InstanceName}Service = new Service{$ClassName}();
            return {$InstanceName}Service;
        }";
                UnitTemplate   = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                UnitTemplate   = UnitTemplate.Replace("{$ClassName}", ClassName);
                UnitTemplate   = UnitTemplate.Replace("{$Table_Comment}", Table_Comment);
                ServiceMethod += UnitTemplate;
            }
            Content = Content.Replace("{$ServiceDefine}", ServiceDefine);
            Content = Content.Replace("{$ServiceMethod}", ServiceMethod);

            //存入目标文件内容
            UtilFile.WriteString2File(Save_Dir + "ManageService.cs", Content);
        }
Exemple #9
0
        public static List <ExplorerItem> GetSchemaAndBuildAssembly(DB2Properties properties, AssemblyName name, ref string nameSpace, ref string typeName, string dllPath)
        {
            var tables   = new TableInfoList(properties);
            var routines = new StoredProcedureInfoList(properties);
            var schema   = new DatabaseExplorerInfoList(tables, routines).ToList();

            var code = new DataContextCodeGenerator(tables, routines, nameSpace, typeName).Generate();

            BuildAssembly(code, name, dllPath);

            return(schema);
        }
Exemple #10
0
        /// <summary>
        /// 2.后台首页功能列表显示【1个文件】
        /// [模板文件]:view/index.txt
        /// 生成文件名称:Index.cshtml
        /// </summary>
        private void CreateIndexView()
        {
            string Site_SEO = "Betterlife.Net网站框架";
            string ClassName = "Admin";
            string InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Unit_Template, Content;

            //读取原文件内容到内存
            Template_Name = @"AutoCode/Model/view/index.txt";
            Content       = UtilFile.ReadFile2String(Template_Name);
            string MainContent = "";

            foreach (string Table_Name in TableList)
            {
                ClassName = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }
                    InstanceName  = UtilString.LcFirst(ClassName);
                    Unit_Template = @"
        <p>@Html.ActionLink(""{$Table_Comment}"", ""{$ClassName}"", ""Home"",null,new { id = ""{$InstanceName}"",title = ""{$Table_Comment}"",@class=""menuIcon""})</p>";
                    Unit_Template = Unit_Template.Replace("{$ClassName}", ClassName);
                    Unit_Template = Unit_Template.Replace("{$Table_Comment}", Table_Comment);
                    Unit_Template = Unit_Template.Replace("{$InstanceName}", InstanceName);
                    MainContent  += Unit_Template;
                }
            }
            MainContent = MainContent.Substring(2);
            Content     = Content.Replace("{$MainContent}", MainContent);
            Content     = Content.Replace("{$Site_SEO}", Site_SEO);


            //存入目标文件内容
            UtilFile.WriteString2File(Save_Dir + "Index.cshtml", Content);
        }
        /// <summary>
        /// 2.生成上下文环境类【1个文件】
        /// [模板文件]:domain/context.txt
        /// 生成文件名称:BetterlifeNetEntities.Context.cs[EntitiesName+".Context.cs"]
        /// </summary>
        private void CreateContext()
        {
            string EntitiesName = AutoCodeBase.EntitiesName;
            string ClassName = "Admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Unit_Template, Content, MainContent;

            //读取原文件内容到内存
            Template_Name = @"AutoCode/Model/domain/context.txt";
            Content       = UtilFile.ReadFile2String(Template_Name);
            MainContent   = "";
            foreach (string Table_Name in TableList)
            {
                ClassName = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }

                    Unit_Template = @"
        /// <summary>
        /// {$Table_Comment}
        /// </summary>
        public DbSet<{$ClassName}> {$ClassName} { get; set; }
                ";

                    Unit_Template = Unit_Template.Replace("{$ClassName}", ClassName);
                    MainContent  += Unit_Template.Replace("{$Table_Comment}", Table_Comment);
                }
            }

            Content = Content.Replace("{$EntitiesName}", EntitiesName);
            Content = Content.Replace("{$MainContent}", MainContent);
            //存入目标文件内容
            UtilFile.WriteString2File(Save_Dir + EntitiesName + ".Context.cs", Content);
        }
Exemple #12
0
        /// <summary>
        ///  2.Business/Admin后台所有ExtService服务类【多个文件】
        /// [模板文件]:service/extservice.txt|service/extservicedefine.txt
        /// [生成文件名称]:"ExtService"+ClassName|"ExtService"+ClassName
        /// [生成文件后缀名]:.ashx.cs|.ashx
        /// </summary>
        private void CreateExtService()
        {
            string ClassName = "Admin";
            string InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Service_NameSpace = "AdminManage";
            string Template_Name, UnitTemplate, Content, Content_New;
            string ColumnNameComment, ColumnCommentName, EnumColumnName;
            string Column_Name, Column_Table_Name, Column_Comment, Column_Type, Column_Length;
            string ImportConvertDataToShow, ExportConvertShowToData;
            string SpecialResult = "";
            string Relation_ClassName, Relation_InstanceName;
            string Relation_Table_Name, Relation_Column_Name, TreeInstanceDefine, Relation_Column_Level, RelationFieldTreeRecursive;
            string ImgUploadSrc = "", Relation_Parent_Init = "";
            bool   IsImage;

            foreach (string Table_Name in TableList)
            {
                //读取原文件内容到内存
                Template_Name = @"AutoCode/Model/service/extservice.txt";
                Content       = UtilFile.ReadFile2String(Template_Name);
                ClassName     = Table_Name;
                RelationFieldTreeRecursive = "";
                TreeInstanceDefine         = "";
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }
                    InstanceName = UtilString.LcFirst(ClassName);

                    Content_New = Content.Replace("{$ClassName}", ClassName);
                    Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                    Content_New = Content_New.Replace("{$InstanceName}", InstanceName);

                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    ColumnNameComment       = ""; ColumnCommentName = ""; EnumColumnName = ""; SpecialResult = "";
                    ImportConvertDataToShow = ""; ExportConvertShowToData = ""; ImgUploadSrc = ""; Relation_Parent_Init = "";
                    foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                    {
                        IsImage        = false;
                        Column_Name    = entry.Key;
                        Column_Comment = entry.Value["Comment"];
                        Column_Type    = entry.Value["Type"];
                        Column_Length  = entry.Value["Length"];
                        string[] c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                        if (c_c.Length >= 1)
                        {
                            Column_Comment = c_c[0];
                        }
                        if (!((Column_Name.ToUpper().Equals(CommitTime_Str.ToUpper())) || (Column_Name.ToUpper().Equals(UpdateTime_Str.ToUpper()))))
                        {
                            if (!Column_Type.Equals("tinyint"))
                            {
                                ColumnNameComment += "                    {\"" + Column_Name + "\",\"" + Column_Comment + "\"},\r\n";
                                ColumnCommentName += "                    {\"" + Column_Comment + "\",\"" + Column_Name + "\"},\r\n";
                            }
                        }
                        int iLength = UtilNumber.Parse(Column_Length);
                        IsImage = ColumnIsImage(Column_Name, Column_Comment);
                        if (IsImage)
                        {
                            UnitTemplate  = @"
                    Dictionary<string,object> uploadResult=this.UploadImage({$InstanceName}Form.Files,""{$Column_Name}Upload"",""{$Column_Name}"",""{$InstanceName}"");
                    if ((uploadResult!=null)&&((bool)uploadResult[""success""]==true)&&(uploadResult.Keys.Contains(""file_name""))){
                        {$InstanceName}.{$Column_Name}=(string)uploadResult[""file_name""];
                    }";
                            UnitTemplate  = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                            UnitTemplate  = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                            ImgUploadSrc += UnitTemplate;
                        }
                        else if (Column_Type.Equals("tinyint"))
                        {
                            Column_Comment = entry.Value["Comment"];
                            c_c            = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                            if (c_c.Length > 1)
                            {
                                UnitTemplate      = @"
                    {$InstanceName}.{$Column_Name}Show = Enum{$Column_Table_Name}.{$Column_Name}Show(Convert.ToChar({$InstanceName}.{$Column_Name}));";
                                UnitTemplate      = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                                UnitTemplate      = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                                Column_Table_Name = Column_Name;
                                if (Array.IndexOf(Same_Column_Names, Column_Name) > -1)
                                {
                                    Column_Table_Name = ClassName + "_" + Column_Name;
                                }
                                UnitTemplate             = UnitTemplate.Replace("{$Column_Table_Name}", Column_Table_Name);
                                SpecialResult           += UnitTemplate;
                                Column_Comment           = c_c[0].Trim();
                                EnumColumnName          += "\"" + Column_Name + "\",";
                                ColumnNameComment       += "                    {\"" + Column_Name + "Show\",\"" + Column_Comment + "\"},\r\n";
                                ColumnCommentName       += "                    {\"" + Column_Comment + "\",\"" + Column_Name + "Show\"},\r\n";
                                ExportConvertShowToData += "                    " + InstanceName + "." + Column_Name + "Show = Enum" + Column_Name + "." + Column_Name + "Show(" + InstanceName + "." + Column_Name + ");\r\n";
                                ImportConvertDataToShow += "                    " + InstanceName + "." + Column_Name + " = Enum" + Column_Name + "." + Column_Name + "ByShow(" + InstanceName + "." + Column_Name + "Show);\r\n";
                            }
                        }
                        else if (Column_Name.Contains("_ID"))
                        {
                            Relation_Table_Name = Column_Name.Replace("_ID", "");
                            Relation_ClassName  = Relation_Table_Name;

                            if (TableList.Contains(Relation_ClassName) || (Relation_ClassName.ToUpper().Equals("PARENT")))
                            {
                                if (Relation_Table_Name.ToUpper().Equals("PARENT"))
                                {
                                    Relation_Table_Name   = Table_Name;
                                    Relation_ClassName    = ClassName;
                                    Relation_Column_Name  = "";
                                    Relation_Column_Level = "";
                                    Relation_InstanceName = UtilString.LcFirst(Relation_ClassName);
                                    Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[Table_Name];
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                        {
                                            Relation_Column_Name = relation_entry.Key;
                                            break;
                                        }
                                    }
                                    bool IsPermitNull = true;
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "LEVEL"))
                                        {
                                            Relation_Column_Level = relation_entry.Key;
                                            if (relation_entry.Value["Null"].Equals("否"))
                                            {
                                                IsPermitNull = false;
                                            }
                                            break;
                                        }
                                    }
                                    TreeInstanceDefine = @"
                {$Relation_ClassName} {$Relation_InstanceName}_instance;";
                                    if (string.IsNullOrEmpty(Relation_Column_Level))
                                    {
                                        foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                        {
                                            if (UtilString.Contains(relation_entry.Key.ToUpper(), "TYPE"))
                                            {
                                                Relation_Column_Level = relation_entry.Key;
                                                break;
                                            }
                                        }
                                        UnitTemplate = @"
                    {$Relation_InstanceName}_instance=null;
                    if ({$Relation_InstanceName}.Parent_ID!=null){
                        {$Relation_InstanceName}_instance=db.{$Relation_ClassName}.Find({$Relation_InstanceName}.Parent_ID);
                        {$Relation_InstanceName}.{$Relation_Column_Name}_Parent={$Relation_InstanceName}_instance.{$Relation_Column_Name};
                    }
                    if ({$Relation_InstanceName}_instance!=null){
                        int level = (int){$Relation_InstanceName}_instance.{$Relation_Column_Level};
                        {$Relation_InstanceName}.{$Relation_ClassName}ShowAll=this.{$Relation_ClassName}ShowAll({$Relation_InstanceName}.Parent_ID,level);
                    }";
                                        RelationFieldTreeRecursive = @"
        /// <summary>
        /// 显示{$Column_Comment}[全]
        ///  注:采用了递归写法
        /// </summary>
        /// <param name=""Parent_ID"">{$Column_Comment}标识</param>
        /// <param name=""level"">目录层级</param>
        /// <returns></returns>
        private string {$Relation_ClassName}ShowAll(int? Parent_ID,int level)
        {
            string {$Relation_ClassName}ShowAll="""";
            {$Relation_ClassName} {$Relation_InstanceName}_p=db.{$Relation_ClassName}.Find(Parent_ID);
            if (level<=0){
                {$Relation_ClassName}ShowAll={$Relation_InstanceName}_p.{$Relation_Column_Name};
            }else{
                Parent_ID={$Relation_InstanceName}_p.Parent_ID;
                {$Relation_ClassName}ShowAll=this.{$Relation_ClassName}ShowAll(Parent_ID,level-1)+""->""+{$Relation_InstanceName}_p.{$Relation_Column_Name};
            }
            return {$Relation_ClassName}ShowAll;
        }
";
                                    }
                                    else
                                    {
                                        string ColumnTypeNull = "int";
                                        if (IsPermitNull)
                                        {
                                            ColumnTypeNull += "?";
                                        }
                                        UnitTemplate = @"
                    {$Relation_InstanceName}_instance=null;
                    if ({$Relation_InstanceName}.Parent_ID!=null){
                        {$Relation_InstanceName}_instance=db.{$Relation_ClassName}.Find({$Relation_InstanceName}.Parent_ID);
                        {$Relation_InstanceName}.{$Relation_Column_Name}_Parent={$Relation_InstanceName}_instance.{$Relation_Column_Name};
                    }
                    if ({$Relation_InstanceName}_instance!=null){
                        {$ColumnTypeNull} level = {$Relation_InstanceName}_instance.{$Relation_Column_Level};
                        {$Relation_InstanceName}.{$Relation_ClassName}ShowAll=this.{$Relation_ClassName}ShowAll({$Relation_InstanceName}.Parent_ID,level);
                    }";
                                        UnitTemplate = UnitTemplate.Replace("{$ColumnTypeNull}", ColumnTypeNull);
                                        RelationFieldTreeRecursive = @"
        /// <summary>
        /// 显示{$Column_Comment}[全]
        ///  注:采用了递归写法
        /// </summary>
        /// <param name=""Parent_ID"">{$Column_Comment}标识</param>
        /// <param name=""level"">目录层级</param>
        /// <returns></returns>
        private string {$Relation_ClassName}ShowAll(int? Parent_ID,int level)
        {
            string {$Relation_ClassName}ShowAll="""";
            {$Relation_ClassName} {$Relation_InstanceName}_p=db.{$Relation_ClassName}.Find(Parent_ID);
            if (level<=1){
                {$Relation_ClassName}ShowAll={$Relation_InstanceName}_p.{$Relation_Column_Name};
            }else{
                Parent_ID={$Relation_InstanceName}_p.Parent_ID;
                {$Relation_ClassName}ShowAll=this.{$Relation_ClassName}ShowAll(Parent_ID,level-1)+""->""+{$Relation_InstanceName}_p.{$Relation_Column_Name};
            }
            return {$Relation_ClassName}ShowAll;
        }
";
                                    }
                                    UnitTemplate       = UnitTemplate.Replace("{$Relation_InstanceName}", Relation_InstanceName);
                                    UnitTemplate       = UnitTemplate.Replace("{$Relation_ClassName}", Relation_ClassName);
                                    UnitTemplate       = UnitTemplate.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                    UnitTemplate       = UnitTemplate.Replace("{$Relation_Column_Level}", Relation_Column_Level);
                                    TreeInstanceDefine = TreeInstanceDefine.Replace("{$Relation_InstanceName}", Relation_InstanceName);
                                    TreeInstanceDefine = TreeInstanceDefine.Replace("{$Relation_ClassName}", Relation_ClassName);
                                    SpecialResult     += UnitTemplate;
                                    Column_Comment     = entry.Value["Comment"];
                                    c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (c_c.Length >= 1)
                                    {
                                        Column_Comment = c_c[0];
                                    }
                                    Column_Comment             = Column_Comment.Replace("标识", "");
                                    RelationFieldTreeRecursive = RelationFieldTreeRecursive.Replace("{$Column_Comment}", Column_Comment);
                                    RelationFieldTreeRecursive = RelationFieldTreeRecursive.Replace("{$Relation_InstanceName}", Relation_InstanceName);
                                    RelationFieldTreeRecursive = RelationFieldTreeRecursive.Replace("{$Relation_ClassName}", Relation_ClassName);
                                    RelationFieldTreeRecursive = RelationFieldTreeRecursive.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                    UnitTemplate          = @"
                    if ({$InstanceName}.{$Column_Name} == 0) {$InstanceName}.{$Column_Name} = null;";
                                    UnitTemplate          = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                                    UnitTemplate          = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                                    Relation_Parent_Init += UnitTemplate;
                                }
                                else if (TableInfoList.ContainsKey(Relation_Table_Name))
                                {
                                    //读取原文件内容到内存
                                    Template_Name         = @"AutoCode/Model/domain/httpdata.txt";
                                    Content               = UtilFile.ReadFile2String(Template_Name);
                                    Relation_InstanceName = UtilString.LcFirst(Relation_ClassName);
                                    Relation_Table_Name   = Relation_ClassName;

                                    Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[Relation_Table_Name];
                                    Relation_Column_Name = Column_Name;
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        Relation_Column_Name = relation_entry.Key;
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                        {
                                            break;
                                        }
                                    }
                                    UnitTemplate             = @"
                    {$InstanceName}.{$Relation_Column_Name} = {$InstanceName}.{$Relation_ClassName}.{$Relation_Column_Name};";
                                    UnitTemplate             = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                                    UnitTemplate             = UnitTemplate.Replace("{$Relation_ClassName}", Relation_ClassName);
                                    UnitTemplate             = UnitTemplate.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                    SpecialResult           += UnitTemplate;
                                    UnitTemplate             = @"
                    {$Relation_ClassName} {$Relation_InstanceName} = db.{$Relation_ClassName}.Where(e => e.{$Relation_Column_Name}.Equals({$InstanceName}.{$Relation_Column_Name})).SingleOrDefault();
                    {$InstanceName}.{$Column_Name} = {$Relation_InstanceName}.ID;
                                ";
                                    UnitTemplate             = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                                    UnitTemplate             = UnitTemplate.Replace("{$Relation_InstanceName}", Relation_InstanceName);
                                    UnitTemplate             = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                                    UnitTemplate             = UnitTemplate.Replace("{$Relation_ClassName}", Relation_ClassName);
                                    UnitTemplate             = UnitTemplate.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                    ImportConvertDataToShow += UnitTemplate;
                                }
                            }
                        }
                        else if (ColumnIsTextArea(Column_Name, Column_Type, iLength))
                        {
                            UnitTemplate   = @"
                    if (!string.IsNullOrEmpty({$InstanceName}.{$Column_Name}))
                    {
                        {$InstanceName}.{$Column_Name}Show = Regex.Replace({$InstanceName}.{$Column_Name}, ""<\\s*img\\s+[^>]*?src\\s*=\\s*(\'|\"")(.*?)\\1[^>]*?\\/?\\s*>"", ""<a href='${2}' target='_blank'>${0}</a>"");
                        {$InstanceName}.{$Column_Name}Show = {$InstanceName}.{$Column_Name}Show.Replace(""\\\"""", """");
                    }";
                            UnitTemplate   = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                            UnitTemplate   = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                            SpecialResult += UnitTemplate;
                        }
                    }
                    ColumnNameComment = ColumnNameComment.Substring(0, ColumnNameComment.Length - 3);
                    ColumnCommentName = ColumnCommentName.Substring(0, ColumnCommentName.Length - 3);

                    Content_New = Content_New.Replace("{$ColumnNameComment}", ColumnNameComment);
                    Content_New = Content_New.Replace("{$ColumnCommentName}", ColumnCommentName);

                    SpecialResult += @"
                    this.Stores.Add((" + ClassName + ")ClearInclude(" + InstanceName + "));";
                    SpecialResult  = SpecialResult.Substring(1, SpecialResult.Length - 1);
                    Content_New    = Content_New.Replace("{$SpecialResult}", SpecialResult);
                    Content_New    = Content_New.Replace("{$Service_NameSpace}", Service_NameSpace);
                    Content_New    = Content_New.Replace("{$CommitTime_Str}", CommitTime_Str);
                    Content_New    = Content_New.Replace("{$UpdateTime_Str}", UpdateTime_Str);

                    Content_New = Content_New.Replace("{$EnumColumnName}", EnumColumnName);
                    Content_New = Content_New.Replace("{$ImportConvertDataToShow}", ImportConvertDataToShow);
                    Content_New = Content_New.Replace("{$ExportConvertShowToData}", ExportConvertShowToData);
                    Content_New = Content_New.Replace("{$RelationFieldTreeRecursive}", RelationFieldTreeRecursive);
                    Content_New = Content_New.Replace("{$TreeInstanceDefine}", TreeInstanceDefine);

                    Content_New = Content_New.Replace("{$ImgUploadSrc}", ImgUploadSrc);
                    Content_New = Content_New.Replace("{$Relation_Parent_Init}", Relation_Parent_Init);

                    //存入目标文件内容
                    UtilFile.WriteString2File(Save_Dir + "ExtService" + ClassName + ".ashx.cs", Content_New);

                    //读取原文件内容到内存
                    Template_Name = @"AutoCode/Model/service/extservicedefine.txt";
                    Content       = UtilFile.ReadFile2String(Template_Name);
                    Content_New   = Content.Replace("{$ClassName}", ClassName);
                    Content_New   = Content_New.Replace("{$Service_NameSpace}", Service_NameSpace);

                    //存入目标文件内容
                    UtilFile.WriteString2File(Save_Dir + "ExtService" + ClassName + ".ashx", Content_New);
                }
            }
        }
        /// <summary>
        /// 1a.生成实体类分部类(显示属性)
        /// </summary>
        private void CreateDomainPartial()
        {
            string ClassName = "Admin";
            string InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Template_Name, UnitTemplate, Content, Content_New;
            string Column_Name, Column_Comment, Column_Type, Column_Length;
            string Relation_ClassName, Relation_Column_Comment, Relation_Table_Name, Relation_Column_Name;
            string UnitColumnDefine;

            foreach (string Table_Name in TableList)
            {
                //读取原文件内容到内存
                Template_Name = @"AutoCode/Model/domain/domain.txt";
                Content       = UtilFile.ReadFile2String(Template_Name);
                ClassName     = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    UnitColumnDefine = "";
                    foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                    {
                        Column_Name    = entry.Key;
                        Column_Comment = entry.Value["Comment"];
                        Column_Type    = entry.Value["Type"];
                        Column_Length  = entry.Value["Length"];
                        string[] c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                        if (c_c.Length >= 1)
                        {
                            Column_Comment = c_c[0];
                        }

                        int iLength = UtilNumber.Parse(Column_Length);

                        if (Column_Type.Equals("tinyint"))
                        {
                            Column_Comment = entry.Value["Comment"];
                            c_c            = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                            if (c_c.Length > 1)
                            {
                                Column_Comment = "";
                                foreach (string Comment_Single_Line in c_c)
                                {
                                    Column_Comment += "        /// " + Comment_Single_Line + "\r\n";
                                }
                                Column_Comment    = Column_Comment.Substring(0, Column_Comment.Length - 2);
                                UnitTemplate      = @"
        /// <summary>
{$Column_Comment}
        /// </summary>
        public String {$Column_Name}Show
        {
            get;
            set;
        }";
                                UnitTemplate      = UnitTemplate.Replace("{$Column_Comment}", Column_Comment);
                                UnitTemplate      = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                                UnitColumnDefine += UnitTemplate;
                            }
                        }
                        else if (Column_Name.Contains("_ID"))
                        {
                            Relation_ClassName = Column_Name.Replace("_ID", "");
                            if (TableList.Contains(Relation_ClassName) || (Relation_ClassName.ToUpper().Equals("PARENT")))
                            {
                                if (Relation_ClassName.ToUpper().Equals("PARENT"))
                                {
                                    Relation_Table_Name  = Relation_ClassName;
                                    Relation_Column_Name = "";
                                    Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[ClassName];
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        Relation_Column_Name = relation_entry.Key;
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                        {
                                            break;
                                        }
                                    }
                                    Column_Comment    = Column_Comment.Replace("标识", "");
                                    UnitTemplate      = @"

        /// <summary>
        /// 显示{$Column_Comment}
        /// </summary>
        public String {$Relation_Column_Name}_Parent
        {
            get;
            set;
        }
        
        /// <summary>
        /// 显示{$Column_Comment}[全]
        /// </summary>
        public String {$ClassName}ShowAll
        {
            get;
            set;
        }
                                    ";
                                    UnitTemplate      = UnitTemplate.Replace("{$Column_Comment}", Column_Comment);
                                    UnitTemplate      = UnitTemplate.Replace("{$ClassName}", ClassName);
                                    UnitTemplate      = UnitTemplate.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                    UnitColumnDefine += UnitTemplate;
                                }
                                else if (TableInfoList.ContainsKey(Relation_ClassName))
                                {
                                    Relation_Table_Name = Relation_ClassName;
                                    Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[Relation_Table_Name];
                                    Relation_Column_Name    = Column_Name;
                                    Relation_Column_Comment = Relation_Column_Name;
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        Relation_Column_Name = relation_entry.Key;

                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                        {
                                            Relation_Column_Comment = relation_entry.Value["Comment"];
                                            break;
                                        }
                                    }
                                    UnitTemplate      = @"
        /// <summary>
        /// {$Relation_Column_Comment}
        /// </summary>
        public String {$Relation_Column_Name}
        {
            get;
            set;
        }";
                                    UnitTemplate      = UnitTemplate.Replace("{$Relation_Column_Comment}", Relation_Column_Comment);
                                    UnitTemplate      = UnitTemplate.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                    UnitColumnDefine += UnitTemplate;
                                }
                            }
                        }
                        else if (ColumnIsTextArea(Column_Name, Column_Type, iLength))
                        {
                            UnitTemplate = @"
        /// <summary>
        /// {$Column_Comment}
        /// </summary>
        public String {$Column_Name}Show
        {
            get;
            set;
        }";

                            Column_Comment = entry.Value["Comment"];
                            c_c            = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                            if (c_c.Length > 1)
                            {
                                Column_Comment = "";
                                foreach (string Comment_Single_Line in c_c)
                                {
                                    Column_Comment += "        /// " + Comment_Single_Line + "\r\n";
                                }
                                Column_Comment = Column_Comment.Substring(0, Column_Comment.Length - 2);
                            }
                            UnitTemplate      = UnitTemplate.Replace("{$Column_Comment}", Column_Comment);
                            UnitTemplate      = UnitTemplate.Replace("{$Column_Name}", Column_Name);
                            UnitColumnDefine += UnitTemplate;
                        }
                    }

                    if (OneHasManyDefine.ContainsKey(Table_Name))
                    {
                        UnitTemplate      = @"
        /// <summary>
        /// 辅助主键
        ///【用于ExtJs Combo主键下拉框显示ID以和主表ID名称区别开来】
        /// </summary>
        public String {$Table_Name}_ID
        {
            get;
            set;
        }";
                        UnitTemplate      = UnitTemplate.Replace("{$Table_Name}", Table_Name);
                        UnitColumnDefine += UnitTemplate;
                    }
                    if (!string.IsNullOrEmpty(UnitColumnDefine))
                    {
                        Table_Comment = TableInfoList[Table_Name]["Comment"];
                        string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                        if (t_c.Length > 1)
                        {
                            Table_Comment = "";
                            foreach (string Comment_Single_Line in t_c)
                            {
                                Table_Comment += "    /// " + Comment_Single_Line + "\r\n";
                            }
                        }
                        else
                        {
                            Table_Comment = "    /// " + Table_Comment;
                        }
                        Content_New = Content.Replace("{$ClassName}", ClassName);
                        Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                        Content_New = Content_New.Replace("{$InstanceName}", InstanceName);
                        Content_New = Content_New.Replace("{$ColumnDefines}", UnitColumnDefine);
                        //存入目标文件内容
                        UtilFile.WriteString2File(Save_Dir + ClassName + ".cs", Content_New);
                    }
                }
            }
        }
        /// <summary>
        /// 3.生成枚举类【一个文件】
        /// [模板文件]:domain/enum.txt
        /// 生成文件名称:Enum.cs
        /// </summary>
        private void CreateEnum()
        {
            string ClassName = "Admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Content;

            string Unit_Template;
            string EnumDefineBlock, EnumD2VBlock, EnumV2DBlock;
            string Column_Name, Column_Table_Name, Column_Type, Column_Comment, MainContent;
            List <Dictionary <string, string> > Enum_ColumnDefine;
            List <string> enumL = new List <string>();//如果重名只放一个

            MainContent = "";
            foreach (string Table_Name in TableList)
            {
                //读取原文件内容到内存
                ClassName = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];

                    Template_Name = @"AutoCode/Model/domain/enum.txt";
                    Content       = UtilFile.ReadFile2String(Template_Name);

                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                    {
                        Column_Name    = entry.Key;
                        Column_Comment = entry.Value["Comment"];
                        Column_Type    = entry.Value["Type"];

                        if (Column_Type.Equals("tinyint"))
                        {
                            string[] c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                            if (c_c.Length > 1)
                            {
                                if (!enumL.Contains(Column_Name))
                                {
                                    enumL.Add(Column_Name);
                                    Enum_ColumnDefine = EnumDefines(Column_Comment);
                                    if ((Enum_ColumnDefine != null) && (Enum_ColumnDefine.Count > 0))
                                    {
                                        EnumDefineBlock = ""; EnumD2VBlock = ""; EnumV2DBlock = "";
                                        foreach (Dictionary <string, string> ColumnDefine in Enum_ColumnDefine)
                                        {
                                            ColumnDefine["Name"] = UtilString.UcFirst(ColumnDefine["Name"]);
                                            EnumDefineBlock     += "        /// <summary>\r\n" +
                                                                   "        /// " + ColumnDefine["Comment"] + "\r\n" +
                                                                   "        /// </summary>\r\n" +
                                                                   "        public const byte " + ColumnDefine["Name"] + " = " + ColumnDefine["Value"] + ";\r\n";
                                            EnumD2VBlock += "                case " + ColumnDefine["Name"] + ":\r\n" +
                                                            "                    return \"" + ColumnDefine["Comment"] + "\";\r\n";
                                            EnumV2DBlock += "                case \"" + ColumnDefine["Comment"] + "\":\r\n" +
                                                            "                    result= " + ColumnDefine["Name"] + ";\r\n" +
                                                            "                    break;\r\n";
                                        }

                                        Unit_Template     = @"
    /// <summary>
    /// {$Column_Comment}
    /// </summary>
    public class Enum{$Column_Table_Name}
    {
{$EnumDefineBlock}
        /// <summary>
        /// 显示{$Column_Comment}
        /// </summary>
        public static String {$Column_Name}Show(byte? {$Column_Name})
        {
            switch ({$Column_Name})
            {
{$EnumD2VBlock}
            }
            return ""未知"";
        }

        /// <summary>
        /// 根据{$Column_Comment}显示文字获取{$Column_Comment}
        /// </summary>
        public static byte? {$Column_Name}ByShow(string Content)
        {
            byte result=byte.MinValue;
            switch (Content)
            {
{$EnumV2DBlock}
            }
            return result;
        }
    }
";
                                        Unit_Template     = Unit_Template.Replace("{$EnumDefineBlock}", EnumDefineBlock);
                                        Unit_Template     = Unit_Template.Replace("{$EnumD2VBlock}", EnumD2VBlock);
                                        Unit_Template     = Unit_Template.Replace("{$EnumV2DBlock}", EnumV2DBlock);
                                        Unit_Template     = Unit_Template.Replace("{$Column_Name}", Column_Name);
                                        Column_Table_Name = Column_Name;
                                        if (Array.IndexOf(Same_Column_Names, Column_Name) > -1)
                                        {
                                            Column_Table_Name = ClassName + "_" + Column_Name;
                                        }
                                        Unit_Template = Unit_Template.Replace("{$Column_Table_Name}", Column_Table_Name);

                                        Column_Comment = c_c[0];
                                        Unit_Template  = Unit_Template.Replace("{$Column_Comment}", Column_Comment);
                                        MainContent   += Unit_Template;
                                    }
                                }
                            }
                        }
                    }
                    Content = Content.Replace("{$MainContent}", MainContent);

                    //存入目标文件内容
                    UtilFile.WriteString2File(Save_Dir + "Enum.cs", Content);
                }
            }
        }
        /// <summary>
        /// 运行主程序
        /// 1.生成配置文件:autocode.config.xml
        /// </summary>
        public void Run()
        {
            base.Init();
            //1.生成配置文件:autocode.config.xml
            App_Dir = App_Dir + Path.DirectorySeparatorChar + "AutoCode" + Path.DirectorySeparatorChar + "Model" + Path.DirectorySeparatorChar;
            string Save_Dir = App_Dir + "autocode.config.xml";

            if (File.Exists(Save_Dir))
            {
                return;
            }
            if (!Directory.Exists(Save_Dir))
            {
                UtilFile.CreateDir(Save_Dir);
            }

            XElement xElement = new XElement(new XElement("classes"));

            foreach (string Table_Name in TableList)
            {
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    //添加查询条件配置
                    XElement ConditionsElement = new XElement("conditions");
                    ConditionsToConfig(Table_Name, ConditionsElement);

                    //表关系主键显示配置
                    XElement RelationShowsElement = new XElement("relationShows");
                    RelationShowsToConfig(Table_Name, RelationShowsElement);
                    if (ConditionsElement.Elements().Count() <= 0)
                    {
                        ConditionsElement = null;
                    }
                    if (RelationShowsElement.Elements().Count() <= 0)
                    {
                        RelationShowsElement = null;
                    }
                    xElement.Add(
                        new XElement("class",
                                     ConditionsElement,
                                     RelationShowsElement,
                                     new XAttribute("name", Table_Name)
                                     )
                        );
                }
            }

            //需要指定编码格式,否则在读取时会抛:根级别上的数据无效。 第 1 行 位置 1异常
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Encoding = new UTF8Encoding(false);
            settings.Indent   = true;
            XmlWriter xw = XmlWriter.Create(Save_Dir, settings);

            xElement.Save(xw);
            //写入文件
            xw.Flush();
            xw.Close();

            //表五种关系映射配置
            XDocument xmlDoc = XDocument.Load(Save_Dir);

            foreach (string Table_Name in TableList)
            {
                RelationFives(Table_Name, xmlDoc);
            }
            xmlDoc.Save(Save_Dir);
            Debug.WriteLine(xElement.ToString());
        }
        /// <summary>
        /// 4.实体类有外键的实体类需要生成HttpData 文件
        ///   例如Admin有外键Department_ID,会生成Department的HttpData类【多个文件】
        /// [模板文件]:domain/httpdata.txt|domain/httpdatadefine.txt
        /// [生成文件名称]:ClassName|ClassName
        /// [生成文件后缀名]:.ashx.cs|.ashx"
        /// </summary>
        private void CreateHttpData()
        {
            string Relation_ClassName = "Admin";
            string Relation_InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Relation_Table_Name, Relation_Column_Name = "", Relation_Column_Level;
            string UnitTemplate, Template_Name, Content, Content_New;
            string ClassName;
            string Column_Name, Column_Comment;

            foreach (string Table_Name in TableList)
            {
                ClassName = Table_Name;
                Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                {
                    Column_Name    = entry.Key;
                    Column_Comment = entry.Value["Comment"];
                    if (Column_Name.Contains("_ID"))
                    {
                        Relation_ClassName  = Column_Name.Replace("_ID", "");
                        Relation_Table_Name = Relation_ClassName;

                        if (TableList.Contains(Relation_ClassName) || (Relation_Table_Name.ToUpper().Equals("PARENT")))
                        {
                            if (Relation_Table_Name.ToUpper().Equals("PARENT"))
                            {
                                string Save_Dir_Tree = Save_Dir + Path.DirectorySeparatorChar + "Tree" + Path.DirectorySeparatorChar;
                                if (!Directory.Exists(Save_Dir_Tree))
                                {
                                    UtilFile.CreateDir(Save_Dir_Tree);
                                }

                                //读取原文件内容到内存
                                Template_Name         = @"AutoCode/Model/domain/httpdatatree.txt";
                                Content               = UtilFile.ReadFile2String(Template_Name);
                                Relation_InstanceName = UtilString.LcFirst(ClassName);
                                Relation_Column_Name  = "";
                                Relation_Column_Level = "";
                                Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[ClassName];
                                foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                {
                                    Relation_Column_Name = relation_entry.Key;
                                    if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                    {
                                        break;
                                    }
                                }

                                foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                {
                                    if (UtilString.Contains(relation_entry.Key.ToUpper(), "LEVEL"))
                                    {
                                        Relation_Column_Level = relation_entry.Key;
                                        break;
                                    }
                                }

                                if (string.IsNullOrEmpty(Relation_Column_Level))
                                {
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "TYPE"))
                                        {
                                            Relation_Column_Level = relation_entry.Key;
                                            break;
                                        }
                                    }
                                    bool IsPermitNull = true;
                                    if (entry.Value["Null"].Equals("否"))
                                    {
                                        IsPermitNull = false;
                                    }
                                    if (IsPermitNull)
                                    {
                                        UnitTemplate = @"
                    int? level=Convert.ToInt16({$InstanceName}.{$Relation_Column_Level});";
                                    }
                                    else
                                    {
                                        UnitTemplate = @"
                    int level=Convert.ToInt16({$InstanceName}.{$Relation_Column_Level});";
                                    }
                                }
                                else
                                {
                                    bool IsPermitNull = true;
                                    if (entry.Value["Null"].Equals("否"))
                                    {
                                        IsPermitNull = false;
                                    }
                                    if (IsPermitNull)
                                    {
                                        UnitTemplate = @"
                    int? level={$InstanceName}.{$Relation_Column_Level};";
                                    }
                                    else
                                    {
                                        UnitTemplate = @"
                    int level={$InstanceName}.{$Relation_Column_Level};";
                                    }
                                }
                                UnitTemplate = UnitTemplate.Replace("{$InstanceName}", Relation_InstanceName);
                                UnitTemplate = UnitTemplate.Replace("{$Relation_Column_Level}", Relation_Column_Level);
                                if (TableInfoList.ContainsKey(ClassName) && TableInfoList[ClassName].ContainsKey("Comment"))
                                {
                                    Table_Comment = TableInfoList[ClassName]["Comment"];
                                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (t_c.Length > 1)
                                    {
                                        Table_Comment = t_c[0];
                                    }
                                }

                                Column_Comment = entry.Value["Comment"];
                                string[] c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                if (c_c.Length >= 1)
                                {
                                    Column_Comment = c_c[0];
                                }
                                Column_Comment = Column_Comment.Replace("标识", "");

                                Content_New = Content.Replace("{$ClassName}", ClassName);
                                Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                                Content_New = Content_New.Replace("{$InstanceName}", Relation_InstanceName);
                                Content_New = Content_New.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                Content_New = Content_New.Replace("{$Relation_Column_Level_Name}", Relation_Column_Level);
                                Content_New = Content_New.Replace("{$Relation_Column_Level}", UnitTemplate);

                                //存入目标文件内容
                                UtilFile.WriteString2File(Save_Dir_Tree + ClassName + "Tree.ashx.cs", Content_New);

                                //读取原文件内容到内存
                                Template_Name = @"AutoCode/Model/domain/httpdatatreedefine.txt";
                                Content       = UtilFile.ReadFile2String(Template_Name);
                                Content_New   = Content.Replace("{$ClassName}", ClassName);

                                //存入目标文件内容
                                UtilFile.WriteString2File(Save_Dir_Tree + ClassName + "Tree.ashx", Content_New);
                            }
                            else if (TableInfoList.ContainsKey(Relation_Table_Name))
                            {
                                //读取原文件内容到内存
                                Template_Name = @"AutoCode/Model/domain/httpdata.txt";
                                Content       = UtilFile.ReadFile2String(Template_Name);
                                if (TableInfoList.ContainsKey(Relation_ClassName))
                                {
                                    Table_Comment = TableInfoList[Relation_ClassName]["Comment"];
                                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (t_c.Length > 1)
                                    {
                                        Table_Comment = t_c[0];
                                    }
                                    Relation_InstanceName = UtilString.LcFirst(Relation_ClassName);

                                    Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[Relation_Table_Name];
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        Relation_Column_Name = relation_entry.Key;
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                        {
                                            break;
                                        }
                                    }

                                    Content_New = Content.Replace("{$ClassName}", Relation_ClassName);
                                    Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                                    Content_New = Content_New.Replace("{$InstanceName}", Relation_InstanceName);
                                    Content_New = Content_New.Replace("{$Column_Name}", Column_Name);
                                    Content_New = Content_New.Replace("{$Relation_Column_Name}", Relation_Column_Name);

                                    //存入目标文件内容
                                    UtilFile.WriteString2File(Save_Dir + Relation_ClassName + ".ashx.cs", Content_New);

                                    //读取原文件内容到内存
                                    Template_Name = @"AutoCode/Model/domain/httpdatadefine.txt";
                                    Content       = UtilFile.ReadFile2String(Template_Name);
                                    Content_New   = Content.Replace("{$ClassName}", Relation_ClassName);

                                    //存入目标文件内容
                                    UtilFile.WriteString2File(Save_Dir + Relation_ClassName + ".ashx", Content_New);
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 1.生成实体类【多个文件】
        /// [模板文件]:domain/domain.txt
        /// [生成文件名]:ClassName
        /// [生成文件后缀名]:.cs
        /// </summary>
        private void CreateDomain()
        {
            string ClassName = "Admin";
            string Table_Comment = "系统管理员";
            string Template_Name, Unit_Template, Content, Content_New;

            string UnitColumnDefine;
            string Column_Name, Column_Type, Column_Comment, Column_Null;
            string Relation_ClassName, Relation_InstanceName, Relation_Table_Name;
            string Relation_Unit_Template = "", Relation_Table_Comment = "", Relation_UnitColumnDefine = "";//相关列数据对象定义
            string OneHasMany_Table_Comment = "", OneHasMany_Unit_Template = "", OneHasMany_UnitColumnDefine = "";

            foreach (string Table_Name in TableList)
            {
                //读取原文件内容到内存
                Template_Name = @"AutoCode/Model/domain/domain.txt";
                Content       = UtilFile.ReadFile2String(Template_Name);
                ClassName     = Table_Name;
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = "";
                        foreach (string Comment_Single_Line in t_c)
                        {
                            Table_Comment += "    /// " + Comment_Single_Line + "\r\n";
                        }
                    }
                    else
                    {
                        Table_Comment = "    /// " + Table_Comment;
                    }
                    Content_New = Content.Replace("{$ClassName}", ClassName);
                    Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);

                    Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                    UnitColumnDefine          = "";
                    Relation_UnitColumnDefine = ""; OneHasMany_UnitColumnDefine = "";
                    foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                    {
                        Column_Name    = entry.Key;
                        Column_Comment = entry.Value["Comment"];
                        Column_Type    = entry.Value["Type"];
                        string[] c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                        if (c_c.Length > 1)
                        {
                            Column_Comment = "";
                            foreach (string Comment_Single_Line in c_c)
                            {
                                Column_Comment += "        /// " + Comment_Single_Line + "\r\n";
                            }
                            Column_Comment = Column_Comment.Substring(0, Column_Comment.Length - 2);
                        }
                        else
                        {
                            Column_Comment = "        /// " + Column_Comment;
                        }
                        Unit_Template =
                            @"        /// <summary>
{$Column_Comment}
        /// </summary>
        public {$Column_Type} {$Column_Name} { get; set; }
";
                        bool IsNull = true;
                        Column_Null = entry.Value["Null"];
                        if (Column_Null.Equals("否"))
                        {
                            IsNull = false;
                        }
                        Column_Type       = ColumnTypeByDbDefine(Column_Type, Column_Name, IsNull);
                        Unit_Template     = Unit_Template.Replace("{$Column_Comment}", Column_Comment);
                        Unit_Template     = Unit_Template.Replace("{$Column_Type}", Column_Type);
                        Unit_Template     = Unit_Template.Replace("{$Column_Name}", Column_Name);
                        UnitColumnDefine += Unit_Template;
                        if (Column_Name.Contains("_ID"))
                        {
                            Relation_ClassName = Column_Name.Replace("_ID", "");
                            if (TableList.Contains(Relation_ClassName))
                            {
                                //读取原文件内容到内存
                                Template_Name         = @"AutoCode/Model/domain/httpdata.txt";
                                Content               = UtilFile.ReadFile2String(Template_Name);
                                Relation_InstanceName = UtilString.LcFirst(Relation_ClassName);
                                Relation_Table_Name   = Relation_ClassName;
                                if (TableInfoList.ContainsKey(Relation_Table_Name))
                                {
                                    Relation_Table_Comment = TableInfoList[Relation_Table_Name]["Comment"];
                                    t_c = Relation_Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (c_c.Length > 1)
                                    {
                                        Relation_Table_Comment = "";
                                        foreach (string Comment_Single_Line in c_c)
                                        {
                                            Relation_Table_Comment += "        /// " + Comment_Single_Line + "\r\n";
                                        }
                                        Relation_Table_Comment = Relation_Table_Comment.Substring(0, Column_Comment.Length - 2);
                                    }
                                    else
                                    {
                                        Relation_Table_Comment = "        /// " + Relation_Table_Comment;
                                    }
                                    //多对一关系需定义
                                    Relation_Unit_Template     = @"
        /// <summary>
{$Relation_Table_Comment}
        /// </summary>
        public virtual {$Relation_ClassName} {$Relation_ClassName} { get; set; }";
                                    Relation_Unit_Template     = Relation_Unit_Template.Replace("{$Relation_ClassName}", Relation_ClassName);
                                    Relation_Unit_Template     = Relation_Unit_Template.Replace("{$Relation_Table_Comment}", Relation_Table_Comment);
                                    Relation_UnitColumnDefine += Relation_Unit_Template;
                                }
                            }
                        }
                    }
                    if (OneHasManyDefine.ContainsKey(Table_Name))
                    {
                        List <string> lOneHasMany = OneHasManyDefine[Table_Name];
                        foreach (string OneHasMany_TableName in lOneHasMany)
                        {
                            OneHasMany_Table_Comment = TableInfoList[OneHasMany_TableName]["Comment"];
                            t_c = OneHasMany_Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                            if (t_c.Length > 1)
                            {
                                OneHasMany_Table_Comment = "";
                                foreach (string Comment_Single_Line in t_c)
                                {
                                    OneHasMany_Table_Comment += "        /// " + Comment_Single_Line + "\r\n";
                                }
                                OneHasMany_Table_Comment = OneHasMany_Table_Comment.Substring(0, OneHasMany_Table_Comment.Length - 2);
                            }
                            else
                            {
                                OneHasMany_Table_Comment = "        /// " + OneHasMany_Table_Comment;
                            }
                            OneHasMany_Unit_Template     = @"
        /// <summary>
{$OneHasMany_Table_Comment}
        /// </summary>
        public virtual ICollection<{$OneHasMany_TableName}> {$OneHasMany_TableName} { get; set; }
                        ";
                            OneHasMany_Unit_Template     = OneHasMany_Unit_Template.Replace("{$OneHasMany_Table_Comment}", OneHasMany_Table_Comment);
                            OneHasMany_Unit_Template     = OneHasMany_Unit_Template.Replace("{$OneHasMany_TableName}", OneHasMany_TableName);
                            OneHasMany_UnitColumnDefine += OneHasMany_Unit_Template;
                        }
                    }
                    UnitColumnDefine += Relation_UnitColumnDefine;
                    UnitColumnDefine += OneHasMany_UnitColumnDefine;

                    Content_New = Content_New.Replace("{$ColumnDefines}", UnitColumnDefine);

                    //存入目标文件内容
                    UtilFile.WriteString2File(Save_Dir + ClassName + ".cs", Content_New);
                }
            }
        }