/// <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); } }
/// <summary> /// 执行文法解释 /// </summary> /// <param name="context"></param> public abstract void Interpret(EntityClassResolveContext context);