本文記錄Git.Framework之ORM中最爲濃墨重彩的一篇,查詢集合。根據本身作的項目統計這個是使用頻率最高的一個。ide
一. 查詢集合方法簡介函數
(1)List<T> GetList(); (2)List<T> GetList(bool isOpenTrans); (3)List<T> GetList(T entity); (4)List<V> GetList<V>(T entity) where V : class, new(); (5)List<T> GetList(T entity, bool isOpenTrans); (6)List<V> GetList<V>(T entity, bool isOpenTrans) where V : class, new();
咱們依舊提供了一些雞肋方法,致使說話也無味,不想再說什麼了。this
List<T> GetList();
該方法返回對應的表中的全部數據行,包括每個字段spa
List<T> GetList(T entity);
能夠返回特定列以及添加篩選條件的集合數據code
List<V> GetList<V>(T entity) where V : class, new();
將查詢的數據結果集返回到特定的對象(能夠是非映射的對象)中去,和前面的查詢對象是同樣的。對象
二. 查詢結合使用案例blog
List<T> GetList(); 返回全部的數據行
List<AdminEntity> list = this.Admin.GetList();
這段代碼返回Admin表中的全部數據行排序
List<T> GetList(T entity); 這個函數可使用條件篩選返回特定字段行的數據集合
SysResourceEntity entity = new SysResourceEntity(); entity.IncludeAll(); entity.Where(a => a.IsDelete == (int)EIsDelete.NotDelete); list = this.SysResource.GetList(entity);
上面返回未刪除的資源數據集合,使用方式都在前面介紹過了,只是返回的數據類型不同。ip
List<V> GetList<V>(T entity) where V : class, new();方法再也不累述使用方式
三. 查詢分頁
List<V> GetList<V>(T entity, int pageSize, int pageIndex, out int rowCount) where V : class, new(); List<T> GetList(T entity, int pageSize, int pageIndex, out int rowCount); List<V> GetList<V>(T entity, int pageSize, int pageIndex, out int rowCount, bool isOpenTrans) where V : class, new(); List<T> GetList(T entity, int pageSize, int pageIndex, out int rowCount, bool isOpenTrans);
在Git.Framework中提供了兩組方法用於查詢分頁。方法中有三個主要參數:資源
T entity 查找的主表映射對象
int pageSize 查詢每頁的行數
int pageIndex 查詢的頁數, 頁數起始值爲1
out int rowCount 返回知足條件的數據總行數
public override List<InStorDetailEntity> GetDetailList(InStorDetailEntity entity, ref PageInfo pageInfo) { InStorDetailEntity detail = new InStorDetailEntity(); detail.Where(a => a.OrderNum == entity.OrderNum); detail.IncludeAll(); detail.OrderBy(a => a.ID, EOrderBy.DESC); int rowCount = 0; List<InStorDetailEntity> listResult = this.InStorDetail.GetList(detail, pageInfo.PageSize, pageInfo.PageIndex, out rowCount); pageInfo.RowCount = rowCount; return listResult; }
上面是一個比較簡單的查詢分頁,在上述代碼中有一個參數 ref PageInfo pageInfo 這是一個分頁對象
[Serializable] public class PageInfo { public PageInfo(); public int PageCount { get; set; } //頁數 public int PageIndex { get; set; }//當前頁 public int PageSize { get; set; }//每頁行數 public int RowCount { get; set; }//總行數 }
PageInfo是一個內置對象,咱們不須要從新定義。可是查詢分頁的方法中有一個比較特殊的
detail.OrderBy(a => a.ID, EOrderBy.DESC);
上面是一個排序的代碼,在使用分頁的時候必須指定排序字段以及排序類型,下面看看排序的類型 天然不用說了
public enum EOrderBy { ASC = 0, DESC = 1, }
四. 查詢前幾行
在SQL中有一個TOP關鍵字 能夠查詢前幾行記錄,這個和分頁有點相似。在Git.Framework 中也提供了方法Top() 用於查詢前幾行數據
List<T> Top(T entity, int pageSize); List<V> Top<V>(T entity, int pageSize) where V : class, new(); List<V> Top<V>(T entity, int pageSize, bool isOpenTrans) where V : class, new(); List<T> Top(T entity, int pageSize, bool isOpenTrans); List<V> Top<V>(T entity, int skipSize, int pageSize) where V : class, new(); List<T> Top(T entity, int skipSize, int pageSize); List<T> Top(T entity, int skipSize, int pageSize, bool isOpenTrans); List<V> Top<V>(T entity, int skipSize, int pageSize, bool isOpenTrans) where V : class, new();
T entity 查詢的主表對象 ; int skipSize 跳過多少航 ; int pageSize查詢行數
List<T> Top(T entity, int pageSize);
這個函數用於從第一行開始查詢幾行,若是pageSize大於數據行,則返回實際的數據行
InStorDetailEntity detail = new InStorDetailEntity(); detail.Where(a => a.OrderNum == entity.OrderNum); detail.IncludeAll(); detail.OrderBy(a => a.ID, EOrderBy.DESC); int rowCount = 0; List<InStorDetailEntity> list = this.InStorDetail.Top(detail,12);
這個函數和分頁函數同樣,都必須指定排序字段以及排序類型