当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > nhibernate数据加载之Criteria加载

ASP.NET
asp.net 数据库的连接和datatable类
代码实现打印功能(asp.net+javascript)
asp.net 读取xml文件里面的内容,绑定到dropdownlist中
asp.net 执行事务代码
asp.net 对中文汉字的加密与解密代码
asp.net 下载文件时输出文件内容
asp.net TextBox控件设置ReadOnly后,不能回传。
c# 执行事务函数代码
asp.net 面试 笔试题目[附答案]
asp.net利用google的api做翻译
asp.ne去除html的函数代码
C# 添加图片水印类实现代码
Silverlight融合ajax实现前后台数据交互
mssql 存储过程调用C#编写的DLL文件
asp.net 需要登陆的网站上下载网页源代码和文件
asp.net cookie的操作,写入、读取与操作
asp.net textarea换行函数代码
.NET发起web请求时维持Session
asp.net 身份验证(最简单篇)
asp.net 身份验证(分目录验证篇)

ASP.NET 中的 nhibernate数据加载之Criteria加载


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 214 ::
收藏到网摘: n/a


Criteria是通过一组条件表达式(Expression)来加载数据的,它返回满足条件的对象集合。主要接口为ICriteria,实现为CriteriaImpl类,此类加有Internal修饰,因此不能在程序集外显示创建,nhibernate在session对象中为我们提供了一个方法CreateCriteria,此方法返回ICriteria接口。这里列出了ICriteria接口的一些方法:SetMaxResults:设置返回的最大结果数,可用于分页;SetFirstResult:设置首个对象返回的位置,可用于分页;SetTimeout:设置操作的超时值,此值将传递给IDbCommand对象;Add:加入条件表达式(Expression对象),此方法可多次调用以组合多个条件;AddOrder:加入排序的字段(Order对象);List:返回满足条件的对象集合。Criteria数据加载的关键就在Expression对象上,此对象组成了查询语句的where部分。Expression是一个abstract(抽象)类,它通过一组static方法实现Factory Method(工厂方法)模式,这些static方法返回的都是Expression类的子类,下面列出一些常用的:Eq:返回EqExpression,这是一个相等判断的表达式;Like:返回LikeExpression,这是一个like判断的表达式;Gt:返回GtExpression,这是一个大于判断的表达式;And:返回AndExpression,这是两个表达式And操作后的表达式;Or:返回OrExpression,这是两个表达式Or操作后的表达式;更多的Expression请参考相关文档或源代码。下面以几个例子来说明Criteria数据加载的用法:1. 取得用户名(username)为billy的用户对象:??? Expression ex = Expression.Eq( "Username", "billy" );??? IList users = session.CreateCriteria(typeof(User)).Add( ex ).List();2。取得用户名(username)为billy, 密码为123456的用户对象??? Expression ex = Expression.And( Expression.Eq("Username", "billy"),??? Expression.Eq("Password", "123456") );??? IList users = session.CreateCriteria(type(User)).Add( ex ).List();3. 取得数据中第20-40的用户对象。??? IList users = session.CreateCriteria(typeof(User))???????????????????????????? .SetFirstResult(20).SetMaxResults(40)???????????????????????????? .List();

对于SQLSERVER,数据定位采用的是IDataReader前滚至firstResult处,然后取maxResults条记录。Criteria数据加载的不足:1. 当使用SetFirstResult和SetMaxResults限制返回的对象数时,无法得知对象的总数;2. 当前版本不支持关联查询(hibernate好像可以);