基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询
程序员文章站
2022-04-09 16:08:00
LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼. v2.0版本支持多表查询了 ......
lnskydb
lnskydb是基于dapper的lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以t4生成实体类免去手写实体类的烦恼.
文档地址: https://liningit.github.io/lnskydb/
开源地址: https://github.com/liningit/lnskydb
nuget地址: https://www.nuget.org/packages/lnskydb/
在此非常感谢skychensky其中lambda表达式的解析参考了他的开源项目
功能特点
lambda表达式查询方便
基于dapper的lambda表达式扩展可以方便的进行查询筛选操作支持分库分表
默认支持按年分库按月分表,也支持自定义分库分表.从此大数据不用愁t4自动生成实体
有t4模板自动生成实体类,再也不用手写那些烦人的实体类了.仓储类及接口也支持自动生成使用门槛低,快速上手
使用非常简单,可以快速上手
连表查询
v2.0版本支持多表查询了
步骤如下
- 调用方法是通过
iquery.outerjoin
或者iquery.innerjoin
进行连表查询,返回ijoinquery对象. - 可以调用
ijoinquery.and,or
进行条件过滤.调用select
返回iselectresult
. - 通过仓储的
getlist
或getpaging
进行返回结果.
var repository = getrepository(); var query = queryfactory.create<productsalebydaynsentity>(m => dbfunction.function<datetime>("isnull", m.updatedate, datetime.now) > new datetime(2019, 6, 26)); var jq = query.innerjoin(queryfactory.create<shopentity>(), m => m.shopid, m => m.sysno, (x, y) => new { sale = x, shop = y }); jq.and(m => m.shop.shopname.contains("店铺")); jq.orderbydescing(m => m.sale.sales + 1); jq.orderby(m => m.sale.productname + m.sale.outproductid); jq.starsize = 10; jq.rows = 5; var res = jq.select(m => m.sale); var paging = repository.getpaging(res); //也可以下面这样返回dto.第二个参数表示第一个表是否要查询所有列. var res2 = jq.select(m => new psdto { shopname = m.shop.shopname }, true); var paging2 = repository.getpaging(res2); var count = paging.totalcount; var lst = paging.tolist();//或者paging.items
推荐阅读
-
基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询
-
基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体二
-
基于Dapper的开源Lambda扩展LnskyDB 3.0已支持Mysql数据库
-
基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体
-
基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍
-
基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询
-
基于Dapper的开源Lambda扩展LnskyDB 3.0已支持Mysql数据库
-
基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体二
-
基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍
-
基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体