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

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

  一. Git.Framework 中提供的方法

    在Git.Framework中有七个方法可以返回实体对象,先简答的看看这里的方法描述


(1) T GetSingle(int id);
(2) T GetSingle(object value);
(3) T GetSingle(T entity);
(4) V GetSingle<V>(T entity) where V : class, new();
(5) T GetSingle(int id, bool isOpenTrans);
(6) T GetSingle(T entity, bool isOpenTrans);
(7) V GetSingle<V>(T entity, bool isOpenTrans) where V : class, new();

    上面总共提供了七个方法用来查询一个实体对象,当然数据库中没有响应的记录则返回为null。

T GetSingle(int id);

    T 是使用的泛型,前面也介绍到了T使用泛型约束必须继承自BaseEntity。 实体中必须有和返回数据列相对应的列才可以获取其值.
如果数据库中表示使用自动标识列作为主键可以使用此方法来查询一个实体对象。

T GetSingle(object value);

    这个方法和上面的一样,感觉有点鸡肋,暂且不用过多的去考虑,这个方法就是根据主键来查询实体对象,不支持联合主键.

T GetSingle(T entity);

    这个方法比较智能一点,可以自定义返回列的数量以及查询的条件,应该属于适用最多的这种情况

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

    这个方法和上面一个其实是一样的,在前面提到过了T适用了泛型约束,而V在这里也是用了泛型约束是一个类,并且必须提供构造函数. T
实际上对应数据库中的一个表,而V不一定对应数据库中的表,其对象属性可以自定义的,只要数据库查询返回的列中存在于这个对象属性中,那么就可以将值付给它。

    至于后面一个方法完全是鸡肋,这里不用多说了。

  二. 查询方法案例

    函数1: T GetSingle(int id);

AdminEntity entity = this.Admin.GetSingle(1);

    上面的这段代码返回返回Admin表中主键为1 的这一行数据的所有值.

    函数2: T GetSingle(T entity)


AdminEntity entity = new AdminEntity();
entity.Include(a => new { a.ID, a.UserCode, a.UserName, a.PassWord, a.Email, a.Phone, a.Mobile, a.RealName, a.RoleNum, a.DepartNum });
entity.Where(a => a.UserCode == userCode);
entity = this.Admin.GetSingle(entity);
return entity;

    上面的代码看过前面几张的应该也见怪不怪了, 返回数据库表中的指定列,并且满足一定的要求,也就是筛选条件.
但是有时候筛选条件是返回多行数据的,这里只会读取第一行,其余行的数据不会做处理。

    函数3: V GetSingle<V>(T entity) where V : class, new();


AdminEntity entity = new AdminEntity();
entity.Include(a => new { a.ID, a.UserCode, a.UserName, a.PassWord, a.Email, a.Phone, a.Mobile, a.RealName, a.RoleNum, a.DepartNum });
entity.Where(a => a.UserCode == userCode);
//entity = this.Admin.GetSingle(entity);
Git.Storage.Entity.Store.CustomerEntity cus = this.Admin.GetList<Git.Storage.Entity.Store.CustomerEntity>(entity);
return entity;

    在对象CustomerEntity中有表Admin相同字段的映射,我们查询的时候就不一定要使用返回AdminEntity,可以使用其他的对象来接收返回值数据。

  三. 返回数据行数

    在数据库中行使用到count() 行数,用于筛选数据有多少行,在Git.Framework中提供了几个函数专门来处理数据行的问题。

int GetCount();
int GetCount(bool isOpenTrans);
int GetCount(T entity);
int GetCount(T entity, bool isOpenTrans);

    int GetCount(); 用于该表中的所有数据行数.

    int GetCount(T entity); 这个函数用于返回特定的筛选条件的数据行数

    另外的两个函数是鸡肋,你可以不用理他们,留之无碍,舍之可惜。

AdminEntity entity = new AdminEntity();
int count = this.Admin.GetCount();

    上面代码是返回表Admin中的所有数据行数,没有数据返回0

AdminEntity entity = new AdminEntity();
int count = this.Admin.GetCount(entity);

    上面的代码没有使用任何条件,结果也是查询该表的所有的数据行

AdminEntity entity = new AdminEntity();
entity.Where(a => a.UserCode == userCode);
int count = this.Admin.GetCount(entity);

    这段代码和上面的是一样的,只是带了相应的条件而已,返回筛选的数据行

  四. 聚合函数

    聚合函数在SQL中是不得不说的,在Git.Framework 中提供了几个简单的几何函数方法映射


V Max<V>(T entity);
V Max<V>(T entity, bool isOpenTrans);
V Min<V>(T entity);
V Min<V>(T entity, bool isOpenTrans);
V Sum<V>(T entity);
V Sum<V>(T entity, bool isOpenTrans);

    聚合函数大家懂的,和上面的Count()使用的方法是一样,这个里面也提供了一些鸡肋的方法,索然无味!这里不贴使用实例了。

时间: 2024-10-23 07:29:22

Git.Framework 框架随手记--ORM查询返回实体对象的相关文章

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

本文记录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)Lis

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

前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫技之类的文章,只是工作的记录和总结,希望能够给大家一些启迪,忘诸位勿喷! 一. 组建项目需要的几个部分 .NET中最为经典的三层结构,众所周知,无人不晓. 在Git.Framework框架中我们也遵循最基本的这种结构,ORM部分我们划分为如下: 数据实体层,数据访问接口层,数据访问层,[层序主入口加

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

在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条件函数. 一. SQL 条件分析 对于SQL每个人应该都很熟悉,这是基础的基础,如果没有使用过SQL的本文可以直接忽略了.先简单看看一个SQL语句,我们根据SQL语句的规则理解Where()方法 SELECT [ID],[UserName],[PassWord],[UserCode],[RealName],[

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

本篇主要记录具体如何新增数据,废话不多说,开始进入正文. 一. 生成工程结构 上一篇已经说到了如何生成工程结构,这里在累述一次. 1. 新建项目总体结构 使用VS新建项目结构,分层结构可以随意.我们使用的结构如下: 2. 引入配置文件相关 Configs文件夹中的配置文件,其目录结构如下图: 以上几个文件为必须的,除了最下面的画红线的为自定义可以修改,具体配置项内容可以参考前面几篇文章.然后再web.config定义如下配置: <appSettings> <add key="D

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

在很多的ORM中对存储过程操作都是一个棘手的地方,因为存储过程是一段预编译的代码,其中可以包含很多处理过程.在Git.Framework中也同样存在这样的问题,目前没有能力解决这个问题.但是对于存储过程的一些外围操作目前还是可以支持的. 上一篇文章简单回顾地址,可能对了解本文有益: Git.Framework 框架随手记--SQL配置文件的使用 一. 结构简单说明 在前面操作基本SQL的时候我们已经知道使用对象模型映射其相关的表,一些基本的操作我们都能够实现完成.在很大的程度上完成了抽象工作,在

Git.Framework 框架随手记--SQL配置文件的使用

前面几篇文章讲到了如何使用框架进行简单结构的增删改查操作,由于个人能力有限在对于复杂的SQL操作面前也是无能为力,只能自己动手来写SQL语句.在Git.Framework中提供了一个公共的接口来直接操作SQL语句. 一. SQL配置文件的结构简介 在这个框架中提供了单独的配置文件用于来管理SQL语句,当然也可以不用配置文件.使用SQL配置文件系统在启动的时候会直接将SQL配置文件转化为Command对象缓存,而不用后期再去创建,这是一个比较不错的优势.下面先看看SQL配置文件的结构 <dataO

Git.Framework 框架随手记--IIS7运行序列化问题

客户反馈系统又登录不了,这是最近几次连续出现相同的问题,从日志反应情况来看: 日志级别:[info] 日志位置:Git.Framework.Resource.ResourceManager 日志时间:2014/12/3 9:08:30 日志内容:反序列化异常:Unable to generate a temporary class (result=1). error CS1567: Error generating Win32 resource: 另一个程序正在使用此文件,进程无法访问. 日志级

Hibernate应用SQL查询返回实体类型

Hibernate应用SQL查询返回实体类型 Hibernate使用SQL查询返回实体类型 以前,使用SQL查询,结果放在 RS 结果集中,还要去转换影射到Java类中.Hibernate中,可以自动帮我们注入到Hibernate 甚至是 非 Hibernate 类型当中. String sql = "select * from T_TMP_PUBLIC_POLICY TP"; SQLQuery sqluery = session.createSQLQuery(sql).addEnti

【Hibernate步步为营】--hql查询之实体对象查询

上篇文章简单介绍了hql它作为Hibernate的查询语言,封装了基本上SQL的所有查询操作,HQL能够实现对数据库文件的增删改查,该篇文章着重讨论HQL实体对象的查询方法. 一.实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替.这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点. 1.1