/// <summary> /// 生成实体类文件 /// </summary> public override void GenerateFiles() { //获取Mapping类模板内容 string templateContent = Tools.ReadFileContent(Configs.MappingTemplatePath); //数据表总数 int tableCount = DataQueue.Count(); Console.WriteLine($"共有{tableCount}个Mapping类待生成:"); //处理数据表转换队列 while (DataQueue.Count() > 0) { var table = (TableDesc)DataQueue.Dequeue(); Console.WriteLine($"正在生成【Mapping类】{table.Description}({table.Name})……{tableCount - DataQueue.Count()}/{tableCount}"); //Mapping类解析对象上下文 MappingResolveContext context = new MappingResolveContext(templateContent, table); //解析器集合 List <MappingExpression> exps = new List <MappingExpression>(); exps.Add(new ModuleNameExpression()); //模块名称文法解释器 exps.Add(new MappingNameExpression()); //Mapping名称文法解释器 exps.Add(new TableSchemaExpression()); //Mapping类数据表架构(Schema)文法解释器 exps.Add(new MappingHasKeysExpression()); //Mapping主键配置处理文法解释器 exps.Add(new MappingColumnsExpression()); //Mapping字段配置处理文法解释器 //循环执行解析 foreach (var exp in exps) { exp.Interpret(context); } //存储的最终文件路径 string filePath = $@"{OutputDirectory}\{context.Table.Module}\{context.Table.Name}Mapping.cs"; //写入文件并保存 SaveFile(filePath, context.Output); } }
/// <summary> /// 执行方法解释 /// </summary> /// <param name="context"><see cref="MappingResolveContext"/>实例</param> public abstract void Interpret(MappingResolveContext context);