当前位置: 移动技术网 > IT编程>开发语言>.net > 基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询

基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询

2019年07月11日  | 移动技术网IT编程  | 我要评论

课件下载,西华热点,断腿鹭鸶

lnskydb github stars github forks

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版本支持多表查询了
步骤如下

  1. 调用方法是通过iquery.outerjoin或者iquery.innerjoin进行连表查询,返回ijoinquery对象.
  2. 可以调用ijoinquery.and,or进行条件过滤.调用select返回iselectresult.
  3. 通过仓储的getlistgetpaging进行返回结果.
 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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网