SmartCode(https://github.com/Ahoo-Wang/SmartCode)
SmartCode = IDataSource -> IBuildTask -> IOutput => Build Everything
Introduction
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
Install from .NET Core Global Tool
dotnet tool install --global SmartCode.CLI
编辑构建配置文件(默认:SmartCode.yml)
命令行执行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