NHibernate -- HQL

使用NHibernate中的HQL来查询数据。

代码:

1         /// <summary>
2         /// 查找事件
3         /// </summary>
4         private void btn_Select_Click(object sender, EventArgs e)
5         {
6
7         }

1.查询,且是使用参数:

 1             //**** 查询 *****
 2             IQuery query = session.CreateQuery("from Person p where p.Id = ? and p.Name = :name");
 3
 4             //NHibernate中使用参数
 5             //一种是用 "?" ,一种使用 ":"。如果使用?,那么直接表示位置,如果使用:,那么使用:后面的文件名
 6             //在NHibernate中的语句:
 7             //NHibernate: select person0_.Id as Id0_, person0_.Name as Name0_ from Person person0_ where [email protected] and [email protected];@p0 = 2, @p1 = ‘事件aaaaaaaa‘
 8             //此时 0 代表是第一个参数
 9             //此时 1 代表是第二个参数
10             query.SetParameter(0, 2);                   //使用 ?
11             query.SetParameter("name", "测试");         //使用 :
12
13             IList<Person> list = query.List<Person>();
14
15             this.label3.Text = list[0].Id.ToString() + list[0].Name.ToString();

2.查询--指定查询的条数,如从第2条--第5条数据:

 1             //**** 查询指定行数****
 2             IQuery query = session.CreateQuery("from Person");
 3
 4             IList<Person> list = query.List<Person>();
 5
 6             //重新给list赋值
 7             //查询3--5条之间的数据,使用的是下标索引,0代表第一条。
 8             list = list.Skip<Person>(3).Take<Person>(5).ToList<Person>();
 9
10             this.label3.Text = list[2].Id.ToString() + " " + list[2].Name.ToString();

将1或是2,放在最上面的代码中即可。

时间: 2024-08-30 09:14:17

NHibernate -- HQL的相关文章

[NHibernate]HQL查询

目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这篇文章将介绍nhibernate的查询方法. 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHiberna

Nhibernate HQL 匿名类(严格说是map的使用以及构造函数的使用

1.map的使用 var hql=string.Format(@"select new map( tc.LimitIndexType as LimitIndexType, tc.LimitScope as LimitScope, tb.Id as Id ) from BasLimitConfig tb,BasProductGroup ta ,BasLimitType tc where tb.LimitDim1Id =ta.Id and tb.LimitDim2Id = tc.Id ")

NHibernate - HQL - 添加和更改

添加: 1 /// <summary> 2 /// 等待乙方做出回应 A 3 /// </summary> 4 private void button2_Click_1(object sender, EventArgs e) 5 { 6 //使用NHibernate,进行存储 7 Chinfo c = new Chinfo(); 8 9 c.CtinfoId = ID; 10 c.Goodsinfo = "白玉手镯"; 11 c.Buyersinfo = &qu

NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)

摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4.0又添加了Query Over.每种方式各有优缺点,任何一个SQL查询可以使用任何查询方式查询.根据程序员每种方式掌握的情况,可以使用不同的查询方式.本篇文章介绍HQL语言查询.HQL(Hibernate Query Language)是NHibernate特有的面向对象查询语言,他具有继承.多态的

[NHibernate]存储过程的使用(三)

目录 写在前面 文档与系列文章 查询 总结 写在前面 前面的文章介绍了在nhibernate中使用存储过程进行增删改的操作,当然查询也是可以的,在nhibernate中也可以执行任意的存储过程.本篇文章将介绍如何使用查询的存储过程的方式. 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHibernate]

[NHibernate]立即加载

目录 写在前面 文档与系列文章 立即加载 一个例子 总结 写在前面 上篇文章介绍了nhibernate延迟加载的相关内容,简单回顾一下延迟加载,就是需要的时候再去加载,需要的时候再向数据库发出sql指令进行查询. 本篇文章介绍的立即加载,则和延迟加载相对,举个简单的例子,就是查询客户信息,则会将该客户相关联的数据立即进行加载.实现立即加载的方式有三种:设置映射文件中节点的可选属性lazy,Nhibernate提供的实用类,HQL抓取策略. 文档与系列文章 [Nhibernate]体系结构 [NH

&quot;NHibernate.Exceptions.GenericADOException: could not load an entity&quot; 解决方案

今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: 2017-01-06 17:07:03,680 [19] XxxXxxxx.Web.Mvc.Controllers.WarningController - UnhandleError guest /master/poitem NHibernate.Exceptions.GenericADOException: co

[NHibernate]延迟加载

目录 写在前面 文档与系列文章 延迟加载 一个例子 总结 写在前面 上篇文章介绍了多对多关系的关联查询的sql,HQL,Criteria查询的三种方式.本篇文章将介绍nhibernate中的延迟加载方式,延迟加载按个人理解也可以叫做按需要加载(Loading-on-demand). 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R

[NHibernate]增删改操作

目录 写在前面 文档与系列文章 添加数据 删除数据 修改数据 添加修改数据 总结 写在前面 上篇文章介绍了nhibernate的基于面向对象的条件查询.对一个项目来说,增删改查是必不可少的,虽然实现方式不同,但是总有涉及到这部分的代码.之前跟朋友说过一个笑话,你要会增删改查了,一切问题就不是问题了,在加上业务处理基本上就完成一个项目了.可能说的是有点过了,但是我觉得在编码中,重要的是你的业务处理能力,在公司很少人能能站在项目框架或者架构的决策的位置,这个时候,作为开发来说不就是负责模块吗?而这些