代码改变世界

Git.Framework 框架随手记--ORM查询数据集合 一

2014-05-14 08:03  贺臣  阅读(2123)  评论(0编辑  收藏  举报

  本文记录Git.Framework之ORM中最为浓墨重彩的一篇,查询集合。根据自己做的项目统计这个是使用频率最高的一个。

 

  一. 查询集合方法简介

(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();

  我们依旧提供了一些鸡肋方法,导致说话也无味,不想再说什么了。

List<T> GetList();

  该方法返回对应的表中的所有数据行,包括每一个字段

List<T> GetList(T entity);

  可以返回特定列以及添加筛选条件的集合数据

List<V> GetList<V>(T entity) where V : class, new();

  将查询的数据结果集返回到特定的对象(可以是非映射的对象)中去,和前面的查询对象是一样的。

 

  二. 查询结合使用案例

    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);

    上面返回未删除的资源数据集合,使用方式都在前面介绍过了,只是返回的数据类型不一样。

    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);

     这个函数和分页函数一样,都必须指定排序字段以及排序类型


作者:情缘
出处:http://www.cnblogs.com/qingyuan/
关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
联系方式: 个人QQ  821865130 ; 仓储技术QQ群 88718955,142050808 ;
吉特仓储管理系统 开源地址: https://github.com/hechenqingyuan/gitwms