本文记录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. JS高级程序设计2nd部分知识要点3

    对象转换方法:1> toLocaleString(),2> toString(),ValueOf()方法会返回相同的值 栈方法是 LIFO (后进先出)的数据结构 -push ,pop 方 ...

  2. linux内核编译,配置本机驱动

    1.前言  编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多 ...

  3. SecureCRT 使用技巧

    VanDyke CRT 和 VanDyke SecureCRT是最常用的终端仿真程序,简单的说就是windows下登录UNIX或Liunx服务器主机的软件.二者不同的是SecureCRT支持SSH∗( ...

  4. volatile 关键字

    就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier).它是被设计用来修饰被不同线程访问和修改的变量.如果没有volatile,基本上会导致这样的结果:要么无 ...

  5. django模型

    用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...

  6. nopcommerce里面的@Html.Widget("home_page_top") 是什么?

    很多朋友在修改模板的时候看到很多类似@Html.Widget("xxx")的东西,这里简单介绍一下流程: 比如@Html.Widget("home_page_top&qu ...

  7. jmeter的使用(四)

    jmeter如何调用java程序呢,下面做简单介绍.1.打开eclipse,新建项目,导入jmeter依赖的包ApacheJMeter_core.jar和ApacheJMeter_java.jar,这 ...

  8. TestNG之执行测试类方式

    TestNG提供了很多执行方式,下面做简单介绍. 1.XML指明测试类,按照类名执行,其中可以指定包名,也可指定无包名: 带包名,运行ParameterSample类和ParameterTest类 & ...

  9. java 20 - 5 字节输出流写出数据的一些方法

    首先回顾下 字节输出流操作步骤:  A:创建字节输出流对象  B:调用write()方法  C:释放资源 创建字节流输出对象 FileOutputStream fos = new FileOutput ...

  10. tp2.2.2新特点

    1.不需要在配置文件中配置URL_MODEL变量就可以用普通模式和路径模式及兼容模式访问URL,但重写模式不可以. 2.当访问的URL地址没有指明具体动作(控制器里的方法)的时候,如果该控制器对应的视 ...