SmartCode 正式开源,不只是代码生成器!

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

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

Introduction

SmartCode 正式开源,不只是代码生成器!

So SmartSql

  • TargetFrameworks: .NETFramework 4.6 & .NETStandard 2.0

  • SmartSql = SmartSql = MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting +Dynamic Repository + ......

 主要特性

  • 1 ORM

    • 1.1 Sync

    • 1.2 Async

  • 2 XmlConfig & XmlStatement -> Sql

    • 2.1 SmartSqlMapConfig & SmartSqlMap (是的,你猜对了,和MyBatis一样,通过XML配置分离SQL。)

    • 2.2 Config Hot Update ->ConfigWatcher & Reload (配置文件热更新:当你需要修改Sql的时候,直接修改SqlMap配置文件,保存即可。)

  • 3 读写分离

    • 3.1 读写分离

    • 3.2 多读库 权重筛选 (配置多读库,根据读库权重选举读库)

  • 4 日志

    • 4.1 基于 Microsoft.Extensions.Logging.Abstractions (当你需要跟踪调试的时候一切都是那么一目了然)

  • 5 Dynamic Repository

    • 5.1 SmartSql.DyRepository (解放你的双手,你来定义仓储接口,我来实现数据库访问)

  • 6 查询缓存 (热数据缓存,一个配置轻松搞定)

    • 6.1.1 Fifo

    • 6.1.2 Lru

    • 6.1 SmartSql.Cache.Memory

    • 6.2 SmartSql.Cache.Redis

    • 6.3 缓存事务一致性

  • 7 分布式配置插件

    • 7.2.1 Load SmartSqlMapSource Xml

    • 7.3.1 Load SmartSqlMapSource Directory

    • 7.1 IConfigLoader (配置文件加载器)

    • 7.2 LocalFileConfigLoader (本地文件配置加载器)

    • 7.3 SmartSql.ZooKeeperConfig (ZooKeeper 分布式配置文件加载器)

SmartCode.Db (代码生成器)

Getting Started

  1. Install from .NET Core Global Tool

dotnet tool install --global SmartCode.CLI
  1. 编辑构建配置文件(默认:SmartCode.yml)

  2. 命令行执行SmartCode命令

  • SmartCode

  • 等待提示输入配置文件路径(可选:默认程序根目录下SmartCode.yml文件)

  • 回车执行命令

等待任务执行结束

查看输出目录结果

构建配置文件


Module: SmartSql.Starter

Author: Ahoo Wang

DataSource:

  Name: Db

  Paramters:

    DbName: SmartSqlStarterDB

    DbProvider: SqlServer

    ConnectionString: Data Source=.;Initial Catalog=SmartSqlStarterDB;Integrated Security=True

Language: CSharp

TemplateEngine: Razor 

Output: 

  Type: File

  Path: 'E://SmartSql-Starter'


# 构建任务

Build:

  ClearDir:

    Type: Clear

    Paramters:

      Dirs: '.'

  Solution:

    Type: Project

    Template: Sln.cshtml

    Output:

      Path: '.'

      Name: '{{Project.Module}}'

      Extension: '.sln'

  SmartSqlConfig:

    Type: Project

    Template: SqlMapConfig.cshtml

    Output:

      Path: '{{Project.Module}}.API'

      Name: 'SmartSqlMapConfig'

      Extension: '.xml'

  Entity_Project:

    Type: Project

    Template: Proj.cshtml

    Output:

      Path: '{{Project.Module}}.Entity'

      Name: '{{Project.Module}}.Entity'

      Extension: '.csproj'

  Entity:

    Type: Table

    Module: Entity

    Template: Entity.cshtml

    Output:

      Path: '{{Project.Module}}.{{Build.Module}}'

      Extension: '.cs'

    NamingConverter:

      Table:

        Tokenizer:

          Type: Default

          Paramters:

            IgnorePrefix: 'T_'

            Delimiter: '_'

        Converter:

          Type: Default

          Paramters: { }

      View:

        Tokenizer:

          Type: Default

          Paramters:

            IgnorePrefix: 'V_'

            Delimiter: '_'

        Converter:

          Type: Pascal

      Column:

        Tokenizer:

          Type: Default

          Paramters: 

            Delimiter: '_'

        Converter:

          Type: Pascal

  Repository_Project:

    Type: Project

    Template: Proj-Repository.cshtml

    Output:

      Path: '{{Project.Module}}.Repository'

      Name: '{{Project.Module}}.Repository'

      Extension: '.csproj'

  Repository:

    Type: Table

    Module: Repository

    Template: Repository.cshtml

    Output:

      Path: '{{Project.Module}}.{{Build.Module}}'

      Name: 'I{{OutputName}}Repository'

      Extension: .cs

    NamingConverter:

      Table:

        Tokenizer:

          Type: Default

          Paramters:

            IgnorePrefix: 'T_'

            Delimiter: '_'

        Converter:

          Type: Default

      View:

        Tokenizer:

          Type: Default

          Paramters: 

            IgnorePrefix: 'V_'

            Delimiter: '_'

        Converter:

          Type: Default


  SqlMap:

    Type: Table

    Template: SqlMap-SqlServer.cshtml

    Output:

      Path: '{{Project.Module}}.API/Maps'

      Extension: .xml

    IgnoreTables: null

    NamingConverter:

      Table:

        Tokenizer:

          Type: Default

          Paramters: 

            IgnorePrefix: 'T_'

            Delimiter: '_'

        Converter:

          Type: Default

      View:

        Tokenizer:

          Type: Default

          Paramters: 

            IgnorePrefix: 'V_'

            Delimiter: '_'

        Converter:

          Type: Default

      Column:

        Tokenizer:

          Type: Default

          Paramters: 

            IgnorePrefix: 'T_'

            Delimiter: '_'

        Converter:

          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

作者:Ahoo Wang (阿虎)

Github: https://github.com/Ahoo-Wang/

SmartSql(高性能、高生产力,超轻量级的ORM!): https://github.com/Ahoo-Wang/SmartSql

SmartCode(不只是代码生成器!): https://github.com/Ahoo-Wang/SmartCode

相关文章:

原文地址:https://www.cnblogs.com/Ahoo-Wang/p/SmartCode-intro.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

SmartCode 正式开源,不只是代码生成器!

相关文章:

  • 2022-12-23
  • 2021-11-02
  • 2021-04-12
  • 2021-08-09
  • 2021-11-30
  • 2021-05-01
  • 2022-12-23
  • 2021-10-12
猜你喜欢
  • 2022-01-08
  • 2021-10-29
  • 2021-11-14
  • 2021-08-09
相关资源
相似解决方案