基於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM