ShadowSql之精简版拆分
ShadowSql拆分为精简版和易用版,项目和nuget包同步拆分
ShadowSql项目拆分为ShadowSql.Core和ShadowSql
Dapper.Shadow项目拆分为Dapper.Shadow.Core和Dapper.Shadow
Dapper.Shadow.Core依赖ShadowSql.Core
Dapper.Shadow依赖ShadowSql
精简版的目标是够用、直接,基于接口编程
易用版的目标是好用、易用,基于泛型编程
易用版依赖精简版,是在精简版上扩展而来
下面举几个例子对比一下
一、读取一张表的例子
1. 精简版代码如下:
var table = SimpleDB.From("Students");
var count = table.Count(Executor);var select = new TableSelect(table);
var students = select.Get<Student>(Executor);
2.易用版代码如下:
var select = Executor.From("Students")
.ToDapperSelect();
var count = select.Count();var students = select.Get<Student>();
在《ShadowSql之借Dapper打造高性能ORM及百变魔法》中有介绍Dapper执行的3种方式
精简版只支持其中1种,易用版3种都支持
二、分页查询数据的例子
1. 精简版代码如下:
var table = new StudentTable("Students");
var query = new TableSqlQuery(table)
.Where(table.Age.GreaterEqualValue(9));
var count = query.Count(Executor);var cursor = new TableCursor(query)
.Desc(table.Id)
.Skip(1)
.Take(10);
var select = new TableSelect(cursor);
var students = select.Get<Student>(Executor);
2.易用版代码如下:
var query = new StudentTable("Students")
.ToSqlQuery()
.Where(table => table.Age.GreaterEqualValue(9));
var count = query.Count(Executor);var students = query.ToCursor()
.Desc(table => table.Id)
.Skip(1)
.Take(10)
.ToSelect()
.Get<Student>(Executor);
分页查询例子中两者的区别更明显,在易用版中如果不求count,整个过程可以全部连写,非常连贯
精简版基本每个组件要定义一个变量
易用版除了通过导航属性(扩展方法)串连各个组件外,还提供高阶函数(函数类型参数供主函数内调用)来进行个性化的查询
当然,易用版用到泛型会多出一丁点的cpu和内存开销,这些可以忽略不计的
另外这个例子也体现了本工具和SqlKata的设计思路的重大区别
SqlKata的Query是个大对象,把所有可能用到的组件都包含在内;
ShadowSql是按需分配,只有需要的时候才链接上需要的组件
这也是SqlKata比ShadowSql执行更慢,内存消耗更多的原因之一
精简版和易用版各有优缺点,萝卜白菜各有所爱,两种我都喜欢的。
如果写小工具,就偏爱易用版。如果做微服务精简版很适合。
源码托管地址: https://github.com/donetsoftwork/Shadow。
如果大家喜欢请动动您发财的小手手帮忙点一下Star。
ShadowSql之精简版拆分的更多相关文章
- Linux上oracle精简版客户端快速部署
RHEL6 + Oracle 11g客户端快速部署 需求:只是用到客户端的sqlplus, sqlldr功能. 方案:用精简版实现客户端的快速部署 1.上传oracle精简版客户端到服务器/tmp目录 ...
- ArcGIS10.2.1精简版、ArcGIS_Desktop10_Tutorial、破解文件等下载地址
原版ArcGIS for Desktop的ISO文件一般都在4.5G以上,一般人用不上里面很多工具,下载回来又浪费时间,现推出ArcGIS10.2.1精简版(里面只包含主程序.Data Interop ...
- TeamViewer12.0.71503(远程控制软件)精简版 单文件企业版介绍
TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...
- Log4j快速使用精简版
Log4j快速使用精简版 1.导入log4j-1.2.17.jar包 2.在src根目录下创建log4j.properties文件 log4j.rootLogger=INFO, CONSOLE, FI ...
- VMware10.06精简版安装后台运行
VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...
- [异常解决] ubuntu上安装虚拟机遇到的问题(vmware坑了,virtual-box简单安装,在virtual-box中安装精简版win7)
利用周末时间将整个电脑格式化,换成了ubuntu系统- 所谓:扫清屋子再请客! 但是有些软件只在win上有,于是还是考虑装个虚拟机来个——逐步过度策略,一点点地从win上转移到linux上 我的系统是 ...
- 电脑公司最新GHOST WIN7系统32,64位优化精简版下载
系统来自系统妈:http://www.xitongma.com 电脑公司最新GHOST win7系统32位优化精简版V2016年3月 系统概述 电脑公司ghost win7 x86(32位)万能装机版 ...
- TeamViewer12.0.71503(远程控制软件)精简版单文件企业版介绍
TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...
- centos7精简版(minimal)killall: command not found
centos7精简版(minimal)运行killall命令提示 command not found 是由于没有安装psmisc所致 Psmisc软件包包含三个帮助管理/proc目录的程序. 安装下列 ...
- 小韦XPSP3 V10.0_Ghost精简版
小韦XPSP3 V10.0_Ghost精简版 该版本基于小韦XPSP3 V10.0,用EasySysprep_4.1进行重新封装,最大程度保持原版极度精简的理念.C盘为NTFS格式,安装后C盘只占用2 ...
随机推荐
- Pycharm:鼠标滚动控制字体大小
Pycharm字体放大的设置 1.File -> setting -> Keymap ->在搜寻框中输入:increase -> Increase Font Size(双击) ...
- 天翼云完成首个国产化万卡训练,MFU达到国内领先水平!
天翼云自研国内首个单集群万卡国产化全功能预训练云服务平台发布上线,并完成万卡规模Llama3.1-405B大模型训练.Llama3.1-405B作为4000亿参数的模型,在息壤训推服务平台的支持下经过 ...
- Q:如何实现notepad++列编辑模式
列编辑: txt编辑器大家都非常熟悉,当需要修改多行的时候只能一行一行的修改.而notepad 可以同时修改多行的数据. 1.鼠标移动光标到要选择的列 2.按住 alt 键,从上到下选择多列,光标会变 ...
- 2.vue3修改端口号
根目录新建vue.vonfig.js module.exports = { devServer: { port: 8081, // 端口 }, lintOnSave: false // 取消 esli ...
- Amis坑
一.特殊字符 1.输入框.多行输入框输入$s字符默认替换成空. 如调用后端接口的输入框输入123$BB123,实际请求的参数为123,$后面的参数消息 解决办法:如确实需要输入$的话,在$前面加\即可 ...
- kvm远程管理
列出centos7中所有的虚拟机 [root@kvm1 ~]# virsh list --all Id Name State ------------------------------------- ...
- DexExpress Wpf BackstageItemWithImage
参考链接: https://docs.devexpress.com/WPF/DevExpress.Xpf.Ribbon.BackstageItemWithImage.GlyphStyle 设置 Bac ...
- sql server 使用sql语句导出二进制文件到本地磁盘
sp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Ole Automation Procedures', 1; ...
- [解决方案][docker] Http: server gave HTTP response to HTTPS client
前言 用centos运行docker不支持http,需要在daemon.json 里面配置一下 目录 没有daemon.json 需要添加这个文件 在daemon.json 增添配置 重启即可 一.l ...
- JS用 URL 构造函数来解析 URL
const url = new URL('http://username:password@hostname:9090/path?arg=value#anchor'); console.log(url ...