zoukankan      html  css  js  c++  java
  • 基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询

    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
    
  • 相关阅读:
    D3D中的粒子系统(1)
    半角/全角的转换算法
    对Native API NtSystemDebugControl的分析
    教你快速下载fs2you.com网盘的文件
    养眼的编辑器配色
    Direct3D中的绘制(2)
    在服务里面弹出一个窗口到用户的桌面上[转]
    驱动级隐藏文件,注册表,进程
    GB2312转unicode程序
    Direct3D中的绘制(5)
  • 原文地址:https://www.cnblogs.com/liningit/p/11158744.html
Copyright © 2011-2022 走看看