SmartCode(https://github.com/Ahoo-Wang/SmartCode)

SmartCode = IDataSource -> IBuildTask -> IOutput => Build Everything

Introduction

SmartCode.Generator (代码生成器)

Demo

Getting Started

  1. Install from .NET Core Global Tool
  1. dotnet tool install --global SmartCode.CLI
  1. 编辑构建配置文件(默认:SmartCode.yml)
  2. 命令行执行SmartCode命令
    • SmartCode
    • 等待提示输入配置文件路径(可选:默认程序根目录下SmartCode.yml文件)
    • 回车执行命令
  3. 等待任务执行结束
  4. 查看输出目录结果

构建配置文件

  1. Module: SmartSql.Starter
  2. Author: Ahoo Wang
  3. DataSource:
  4. Name: Db
  5. Paramters:
  6. DbName: SmartSqlStarterDB
  7. DbProvider: SqlServer
  8. ConnectionString: Data Source=.;Initial Catalog=SmartSqlStarterDB;Integrated Security=True
  9. Language: CSharp
  10. TemplateEngine: Razor
  11. Output:
  12. Type: File
  13. Path: 'E://SmartSql-Starter'
  14. # 构建任务
  15. Build:
  16. ClearDir:
  17. Type: Clear
  18. Paramters:
  19. Dirs: '.'
  20. Solution:
  21. Type: Project
  22. Template: Sln.cshtml
  23. Output:
  24. Path: '.'
  25. Name: '{{Project.Module}}'
  26. Extension: '.sln'
  27. SmartSqlConfig:
  28. Type: Project
  29. Template: SqlMapConfig.cshtml
  30. Output:
  31. Path: '{{Project.Module}}.API'
  32. Name: 'SmartSqlMapConfig'
  33. Extension: '.xml'
  34. Entity_Project:
  35. Type: Project
  36. Template: Proj.cshtml
  37. Output:
  38. Path: '{{Project.Module}}.Entity'
  39. Name: '{{Project.Module}}.Entity'
  40. Extension: '.csproj'
  41. Entity:
  42. Type: Table
  43. Module: Entity
  44. Template: Entity.cshtml
  45. Output:
  46. Path: '{{Project.Module}}.{{Build.Module}}'
  47. Extension: '.cs'
  48. NamingConverter:
  49. Table:
  50. Tokenizer:
  51. Type: Default
  52. Paramters:
  53. IgnorePrefix: 'T_'
  54. Delimiter: '_'
  55. Converter:
  56. Type: Default
  57. Paramters: { }
  58. View:
  59. Tokenizer:
  60. Type: Default
  61. Paramters:
  62. IgnorePrefix: 'V_'
  63. Delimiter: '_'
  64. Converter:
  65. Type: Pascal
  66. Column:
  67. Tokenizer:
  68. Type: Default
  69. Paramters:
  70. Delimiter: '_'
  71. Converter:
  72. Type: Pascal
  73. Repository_Project:
  74. Type: Project
  75. Template: Proj-Repository.cshtml
  76. Output:
  77. Path: '{{Project.Module}}.Repository'
  78. Name: '{{Project.Module}}.Repository'
  79. Extension: '.csproj'
  80. Repository:
  81. Type: Table
  82. Module: Repository
  83. Template: Repository.cshtml
  84. Output:
  85. Path: '{{Project.Module}}.{{Build.Module}}'
  86. Name: 'I{{OutputName}}Repository'
  87. Extension: .cs
  88. NamingConverter:
  89. Table:
  90. Tokenizer:
  91. Type: Default
  92. Paramters:
  93. IgnorePrefix: 'T_'
  94. Delimiter: '_'
  95. Converter:
  96. Type: Default
  97. View:
  98. Tokenizer:
  99. Type: Default
  100. Paramters:
  101. IgnorePrefix: 'V_'
  102. Delimiter: '_'
  103. Converter:
  104. Type: Default
  105. SqlMap:
  106. Type: Table
  107. Template: SqlMap-SqlServer.cshtml
  108. Output:
  109. Path: '{{Project.Module}}.API/Maps'
  110. Extension: .xml
  111. IgnoreTables: null
  112. NamingConverter:
  113. Table:
  114. Tokenizer:
  115. Type: Default
  116. Paramters:
  117. IgnorePrefix: 'T_'
  118. Delimiter: '_'
  119. Converter:
  120. Type: Default
  121. View:
  122. Tokenizer:
  123. Type: Default
  124. Paramters:
  125. IgnorePrefix: 'V_'
  126. Delimiter: '_'
  127. Converter:
  128. Type: Default
  129. Column:
  130. Tokenizer:
  131. Type: Default
  132. Paramters:
  133. IgnorePrefix: 'T_'
  134. Delimiter: '_'
  135. Converter:
  136. Type: Default
参数名 说明
Module 根模块名
Author 作者
DataSource 数据源
Language 语言:CSharp/Java/....
TemplateEngine 模板引擎:目前内置:Razor/Handlebars
Output 输出
Build 任务构建s

DataSource 数据源,Name:Db

属性 Name:Db,使用DbSource插件作为数据源

DbSource.Paramters 接受以下三个参数:

参数名 说明
DbName 数据库名称
DbProvider 数据驱动提供者:MySql,MariaDB,PostgreSql,SqlServer,Oracle,SQLite
ConnectionString 连接字符串

Build 任务构建

参数名 说明
Type 构建类型,Clear:用于清理目录s/文件s,Project:用于构建单文件,如:解决方案文件/项目文件,Table: 用于构建以数据表为基础的文件,如:Entity,Repository文件
Module 构建模块名
TemplateEngine 模板引擎,可选,默认使用根模块引擎
Template 模板文件
Output 输出
IncludeTables 包括表名s
IgnoreTables 忽略表名s
NamingConverter 命名转换器
Paramters 自定义构建参数

NamingConverter 命名转换

属性 说明
类型 Table/View/Column
Tokenizer 分词器
Converter 转换器:Camel/Pascal/None
NamingConverter.Tokenizer 分词器
属性 说明
Type Default
Paramters.IgnorePrefix 忽略前缀字符
Paramters.Delimiter 分隔符
Paramters.UppercaseSplit 使用大写分隔,默认:true

如何贡献模板

为了让更多人参与到SmartCode模板建设中来,故有以下模板规范:

  1. 模板作者在 src/SmartCode.Generator/RazorTemplates 中新建目录,并以作者英文名为目录名称
  2. 把模板放置到作者目录
  3. 作者目录下必须包括 README.md 文件,以说明模板的用途场景以及使用方式
  4. 提交PR

SmartCode.ETL(Extract-Transform-Load)

ETL 构建配置

  1. Author: Ahoo Wang
  2. DataSource:
  3. Name: Extract
  4. Paramters:
  5. DbProvider: SqlServer
  6. ConnectionString: Data Source=.;Initial Catalog=SmartSqlDB;Integrated Security=True
  7. Query: SELECT [Id],[UserName],[Pwd],[Status],[LastLoginTime],[CreationTime],[Deleted] FROM [T_User] Where Id>@LastMaxId And CreationTime>@LastQueryTime
  8. PKColumn: Id
  9. Paramters:
  10. ETLCode: SmartCode.ETL.Test
  11. ETLRepository: PG
  12. Build:
  13. Transform:
  14. Type: Transform
  15. Paramters:
  16. Script: Load2PostgreSql.cshtml
  17. Load2PostgreSql:
  18. Type: Load
  19. Paramters:
  20. DbProvider: PostgreSql
  21. ConnectionString: Server=localhost;Port=5432;User Id=postgres;Password=SmartSql; Database=smartsql_db;
  22. Table: t_user
  23. ColumnMapping: [{Column: UserName,Mapping: user_name}
  24. ,{Column: Pwd,Mapping: pwd}
  25. ,{Column: Status,Mapping: status}
  26. ,{Column: LastLoginTime,Mapping: lastlogintime}
  27. ,{Column: CreationTime,Mapping: creationtime}
  28. ,{Column: Deleted,Mapping: deleted}]
  29. PreCommand:
  30. PostCommand:

SmartCode 正式开源,不只是代码生成器!的更多相关文章

  1. 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

    1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ...

  2. 中文编程语言Z语言开源正式开源!!!

    (Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为 ...

  3. fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因

    很开心的宣布 Log Guru 正式开源! Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取,Github 地址:FIRHQ/LogGuru. Log Guru ...

  4. Restful.Data v1.0 - 轻量级数据持久层组件, 正式开源发布了

    经过几个星期的优化调整,今天 Restful.Data 正式开源发布. 源码地址:https://github.com/linli8/Restful 今天不写那么多废话了,还是重新介绍一下 Restf ...

  5. Swift 正式开源, 包括 Swift 核心库和包管理器

    Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章.自从苹果发布 Swfit 编程语言,就成为了历史上发展最快的编程语言之一.Swift 通过设计使得软件编写更加快速更加安全 ...

  6. Facebook 正式开源其大数据查询引擎 Presto

    Facebook 正式宣布开源 Presto —— 数据查询引擎,可对250PB以上的数据进行快速地交互式分析.该项目始于 2012 年秋季开始开发,目前该项目已经在超过 1000 名 Faceboo ...

  7. 新一代 CI 持续集成工具 flow.ci 正式开源

    很高兴地宣布 flow.ci 在 Apache-2.0 协议下正式开源了.flow.ci 是国内首套开源持续集成(CI) 解决方案,帮助企业团队实现开发流程(build-test-deploy)自动化 ...

  8. 重磅消息-Service Fabric 正式开源

    微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的S ...

  9. 微软正式开源Blazor ,将.NET带回到浏览器

    微软 ASP.NET 团队近日正式开源了  Blazor ,这是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net . Blazor 旨在简化快速的单页面 .Net ...

随机推荐

  1. myeclipse maven tomcat插件 创建web工程

    自从有了云笔记,很久不写博客了.今天写了使用Freemarker静态化JSP页面,索性就发出来.初学,勿喷. 这篇文字以前放在云笔记里,当然里面有很多借鉴网络上的东西,而自己也使用Maven很久了,索 ...

  2. 毕业样本=[胡弗汉顿大学毕业证书]UoW原件一模一样证书

    胡弗汉顿大学毕业证[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&a ...

  3. CentOS7 安装Redis Cluster集群

    上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...

  4. django 多对多自定义第三张表时的注意事项

    杂交(自定义第三张表+ManyToManyField) # modles.py class Boy(models.Model): name = models.CharField(max_length= ...

  5. 代码转换为html显示

    需要将代码转换为 html 使其显示好看一些,可以在这里进行装换: https://tohtml.com/ http://hilite.me/

  6. Fastjson 1.2.22-24 反序列化漏洞分析

    目录 0x00 废话 0x01 简单介绍 FastJson的简单使用 0x02 原理分析 分析POC 调试分析 0x03 复现过程 0x04 参考文章 0x00 废话 balabala 开始 0x01 ...

  7. SpringBoot进阶教程(二十五)整合Redis之@Cacheable、@CachePut、@CacheEvict的应用

    在上一篇文章(<SpringBoot(二十四)整合Redis>)中,已经实现了Spring Boot对Redis的整合,既然已经讲到Cache了,今天就介绍介绍缓存注解.各家互联网产品现在 ...

  8. BFS(广度优先搜索)

    简介 BFS的过程是首先访问起始结点v,接着访问顶点v的所有未被访问的邻接结点,然后对每个继续进行上述步骤,直到所有结点都被访问过为止,当然,在访问过程中,需要使用一个队列,然后类似二叉树的层次遍历来 ...

  9. Java集合学习总结

    java集合 collection public interface Collection<E> extends Iterable<E> List public interfa ...

  10. RFI to RCE challenge

    http://www.zixem.altervista.org/RCE/level1.php 构造payload: https://zixem.altervista.org/RCE/level1.ph ...