本文记录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 = ;
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 = ,
DESC = ,
}

    

  四. 查询前几行

    在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 = ;
List<InStorDetailEntity> list = this.InStorDetail.Top(detail,);

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

Git.Framework 框架随手记--ORM查询数据集合 一的更多相关文章

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

    一.  分组查询 在SQL中使用Group By 来对数据分组,在实际中分组中一般与聚合函数一并使用.在Git.Framework中提供了相应的分组方法 DataTable Group(T entit ...

  2. Git.Framework 框架随手记--ORM查询返回实体对象

    使用ORM有一个优势,可以通过某种机制将数据库中的数据转化为自己想要的对象形式数据.本章记录一下如何使用Git.Framework返回实体对象 一. Git.Framework 中提供的方法 在Git ...

  3. Git.Framework 框架随手记--ORM条件组合

    在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条 ...

  4. Git.Framework 框架随手记--ORM编辑删除

    前面一篇文章<Git.Framework 框架随手记--ORM新增操作>主要讲解了如何使用Git.Framework往数据库中添加数据.其操作过程相对简单,本章主要记录如何编辑数据和修改数 ...

  5. Git.Framework 框架随手记--ORM项目工程

    前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫 ...

  6. Git.Framework 框架随手记--ORM新增操作

    本篇主要记录具体如何新增数据,废话不多说,开始进入正文. 一. 生成工程结构 上一篇已经说到了如何生成工程结构,这里在累述一次. 1. 新建项目总体结构 使用VS新建项目结构,分层结构可以随意.我们使 ...

  7. Git.Framework 框架随手记--存储过程简化

    在很多的ORM中对存储过程操作都是一个棘手的地方,因为存储过程是一段预编译的代码,其中可以包含很多处理过程.在Git.Framework中也同样存在这样的问题,目前没有能力解决这个问题.但是对于存储过 ...

  8. Git.Framework 框架随手记--历史原因

    Git.Framework 是近几年工作的一些工作经验总结,虽不能和某些知名的框架相提并论,但是还是比较实用的.此框架经过三年多的升级和维护,已经具有较强的实用性,在此记录该框架的使用操作方式,贡献给 ...

  9. Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目

    本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ...

随机推荐

  1. 边工作边刷题:70天一遍leetcode: day 86-2

    Best Meeting Point 要点: 题本身不难理解,manhattan distance.follow up就变成weighted了(因为一个地方可以有多个住户) 注意input是grid的 ...

  2. fastDFS 一二事 - 简易服务器搭建(单linux)

    什么是FastDFS FastDFS是一个叫余庆的哥们用c语言编写的一款开源的分布式文件系统 功能有冗余备份.负载均衡.线性扩容等,高可用.高性能 可以用FastDFS搭建一套高性能的文件服务器集群提 ...

  3. Linux基于libmemcached,php扩展memcached的安装

    安装环境:CentOS 6.4 php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcache ...

  4. Linux 安装oracle客户端

    环境: CentOS release 6.4 (Final) 一.下载文件 1.首先要查看oracle版本,对应的SQL如下:  select * from V$version ; 2.根据oracl ...

  5. xshell5 启动显示 mfc110.dll msvcp110.dll 未找到问题 解决办法

    1. 安装 Visual C++ Redistributable for Visual Studio 2012 x86版本 注意: 一定要安装x86版本.(xshell5是32位的程序) 微软的官方下 ...

  6. Hadoop和Spark的异同

    谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生.但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同. 解决问题的 ...

  7. linux下的缓存机制及清理buffer/cache/swap的方法梳理

    (1)缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 ...

  8. windows客户机连接gerrit的一个报错处理

    gerrit环境部署在linux服务器,windos客户机连接gerrit进行代码操作: 在windows客户机下载Git客户端 在“Git Bash”里使用 ”ssh-keygen -t rsa - ...

  9. ubuntu中启用ssh服务

    ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...

  10. 【转】【C#】C#性能优化总结

    1.  C#语言方面         1.1 垃圾回收    垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意.    1.1.1 避免不必要的对象创 ...