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