qidao123.com技术社区-IT企服评测·应用市场
标题:
ShadowSql之精简版拆分
[打印本页]
作者:
丝
时间:
2025-4-12 01:56
标题:
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);<br> var select = new TableSelect(table);
var students = select.Get<Student>(Executor);
复制代码
2.易用版代码如下:
var select = Executor.From("Students")
.ToDapperSelect();
var count = select.Count();<br> 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);<br> 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);<br> var students = query.ToCursor()
.Desc(table => table.Id)
.Skip(1)
.Take(10)
.ToSelect()
.Get<Student>(Executor);
复制代码
分页查询例子中两者的区别更明显,在易用版中如果不求count,整个过程可以全部连写,非常连贯
精简版根本每个组件要定义一个变量
易用版除了通过导航属性(扩展方法)串连各个组件外,还提供高阶函数(函数类型参数供主函数内调用)来进行个性化的查询
当然,易用版用到泛型会多出一丁点的cpu和内存开销,这些可以忽略不计的
另外这个例子也表现了本工具和SqlKata的计划思绪的重大区别
SqlKata的Query是个大对象,把所有大概用到的组件都包含在内;
ShadowSql是按需分配,只有需要的时候才链接上需要的组件
这也是SqlKata比ShadowSql执行更慢,内存斲丧更多的缘故原由之一
精简版和易用版各有优缺点,萝卜白菜各有所爱,两种我都喜欢。
如果写小工具,就偏爱易用版。如果做微服务精简版很恰当。
nuget包如下:
接待大家尝试,有什么问题给我留言,我会尽力满足大家的需求
源码托管地址: https://github.com/donetsoftwork/Shadow,也接待大家直接查看源码。
如果大家喜欢请动动您发财的小手手帮助点一下Star。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4