Git.Framework 框架隨手記--ORM查詢數據集合 一

  本文記錄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);

     這個函數和分頁函數同樣,都必須指定排序字段以及排序類型

相關文章
相關標籤/搜索