コード例 #1
0
        /// <summary>
        /// 生成实体类文件
        /// </summary>
        public override void GenerateFiles()
        {
            //获取实体类模板内容
            string templateContent = Tools.ReadFileContent(Configs.EntityTemplatePath);

            //数据表总数
            int tableCount = DataQueue.Count();

            Console.WriteLine($"共有{tableCount}个实体类类文件待生成:");

            //处理数据表转换队列
            while (DataQueue.Count() > 0)
            {
                var table = (TableDesc)DataQueue.Dequeue();

                Console.WriteLine($"正在生成【实体类】{table.Description}({table.Name})……{tableCount - DataQueue.Count()}/{tableCount}");

                //实体类解析对象上下文
                EntityClassResolveContext context = new EntityClassResolveContext(templateContent, table);

                //解析器集合
                List <EntityClassExpression> exps = new List <EntityClassExpression>();
                exps.Add(new ModuleNameExpression());               //模块名称文法解释器
                exps.Add(new EntityNameExpression());               //实体名称文法解释器
                exps.Add(new EntityDescriptionExpression());        //实体类描述文法解释器
                exps.Add(new ForEachPropertiesExpression());        //实体属性循环处理文法解释器
                exps.Add(new ForeachPrimaryKeysExpression());       //实体主键处理方法解释器

                //循环执行解析
                foreach (var exp in exps)
                {
                    exp.Interpret(context);
                }

                //存储的最终文件路径
                string filePath = $@"{OutputDirectory}\{context.TableDesc.Module}\{context.TableDesc.Name}.cs";

                //写入文件并保存
                SaveFile(filePath, context.OutputEntityClassContent);
            }
        }
コード例 #2
0
 /// <summary>
 /// 执行文法解释
 /// </summary>
 /// <param name="context"></param>
 public abstract void Interpret(EntityClassResolveContext context);