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

640?wx_fmt=png

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

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

Introduction

640?wx_fmt=png

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 分词器
属性说明
TypeDefault
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

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值