nhibernate数据加载之Criteria加载
来源:互联网 发布:可小猫太白捏脸数据 编辑:程序博客网 时间:2024/05/28 16:17
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好像可以);
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>- nhibernate数据加载之Criteria加载
- nhibernate源码分析之六: Criteria数据加载
- NHibernate数据加载之Query加载(HQL)
- nhibernate: HQL数据加载
- nhibernate源码分析之七: HQL数据加载
- NHibernate之延迟加载与立即加载
- NHibernate查询之HQL&Criteria
- 九、NHibernate之延迟加载与立即加载
- 见机行事【Nhibernate懒加载】
- nhibernate 加载对象失败
- 三、NHibernate查询之HQL&Criteria
- ListView之数据加载
- NHibernate之旅(12):初探延迟加载机制
- NHibernate之旅(13):初探立即加载机制
- NHibernate之旅(12):初探延迟加载机制
- NHibernate之旅(13):初探立即加载机制
- NHibernate之旅(12):初探延迟加载机制
- NHibernate之旅(13):初探立即加载机制
- 非递归实现不重复序列的全排列(三)
- 在设计期跟踪代码 (.NET)
- Using Attributes in C#
- Visual C# .NET Express Beta 1 试用手记 1
- subversion 文件夹出问题了
- nhibernate数据加载之Criteria加载
- 收集了一些小技巧的连接 (.NET)
- 在图片上写字 (C#)
- C# 把指定控件显示在最上面
- 转贴 打印机自定义纸张
- 在.NET中调用存储过程
- For 和 Foreach 的比较
- 如何得到某集合的所有子集合?
- 非递归解决组合问题