本文记录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);
这个函数和分页函数同样,都必须指定排序字段以及排序类型