nhibernate之旅探索查询之条件查询(criteriaquery)

nhibernate之旅探索查询之条件查询(criteriaquery)

ID:21814929

大小:55.00 KB

页数:5页

时间:2018-10-24

nhibernate之旅探索查询之条件查询(criteriaquery)_第1页
nhibernate之旅探索查询之条件查询(criteriaquery)_第2页
nhibernate之旅探索查询之条件查询(criteriaquery)_第3页
nhibernate之旅探索查询之条件查询(criteriaquery)_第4页
nhibernate之旅探索查询之条件查询(criteriaquery)_第5页
资源描述:

《nhibernate之旅探索查询之条件查询(criteriaquery)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、•NHibernate之旅:探索查询之条件查询(CriteriaQuery)本节内容•NHibernate巾的查询方法•条件查询(CriteriaQuery)o1.创建ICriteria实例o2.结果集限制o3.结果集排序o4.一些说明•根掘示例査询(QueryByExample)•实例分析•结语上一节,我们介绍了NHibernate查拘语言的一种:NHibernate查询语言(HQL,NHibernateQueryLanguage),这一节介绍一下条件查询(CriteriaAPI)。NHibernate中的查询方法在NHibernate屮提供了

2、三种查询方式给我们选择:NHibernate查询语言(HQL,NHibernateQueryLanguage)、条件查询(CriteriaAPI,CriteriaQuery)、(根据示例查询(QBE,QueryByExample)是条件查询的一种特殊情况)、原生SQL(LiteralSQL,T-SQL、PL/SQL)。每个人有不同的喜好和特长,可以根据自己的情况选择使川其巾的一种或几种。这一节我们介绍条件查询。劍牛Si旬(CriteriaQuery)HQL极为强大,但是有些人希望能够动态的使用一种而向对象API创建杏询,而不是在.NET代码屮嵌入

3、字符串。在NHibernate屮,提供了一种直观的、可扩展的CriteriaAPI。在我们键入查询语句的时候,提供了编译时的语法检查,VS提供了强大的智能提示。如果你对HQL的语法感觉不是很舒服的话,用这种方法可能更容易。这种API也比HQL更可扩展。典型用法:从ISession接口屮创建ICriteria实例对象;在这个ICriteria实例对象上设置一个或多个表达式;要求ICriteria接II返回盂要的列表,就是根据表达式从数据库屮返回对象。注意:由于篇幅有限,我在这里仅仅贴出了数据访问层的代码。测试这些方法的代码就没有贴出来了,你可以下载

4、本系列的源代码仔细看看测试这些方法的代码。这些实例我争取写出来可以运行起来,大家下载源码看看效果,一些数据盂要按个人数据库里的数据情况修改。例如查询条件和结果。这节,我们在上一节源代码的基础上,在数据访问层屮新建QueryCriteriaAPI.cs类川于编写条件查询方法,在数据访问的测试层新建一QueryCriteriaAPIFixture.cs类用于测试。1•创建ICriteria实例使用ISession接门的CreateCriteria方法创建了NHibernate.ICriteria接门一个特定的持久化类的杏询实例,也川'以说ISessi

5、on是用来制造Criteria实例的工厂。publicIListCreateCriteria(){ICriteriacrit=_session.CreateCriteria(typeof(Customer));crit.SetMaxResults(50);IListcustomers=crit.List();returncustomers;L例如上面的例子返回Customer对象集合,设置最大的集合数量为50条。2.结果集限制使用ICriteria接口提供的Add方法添加Restrict

6、ions类中约束表达式可以限制一些绍果集的作用。publicIListNarrowing(){IListcustomers=_session.CreateCriteria(typeof(Customer))•Add(Restrictions.Like("Firstname",nY〕ing%")).Add(Restrictions.Between(HLastname","A%","Y%")).List();returncustomers;}3.结果集排序使用ICriteria.Order对

7、结果集排呼,第二个参数true代表asc,false代表desc。例如下而例子查询Customer对象按FirstName降序、Lastname升序。publicIListOrder(){return_session.CreateCriteria(typeof(Customer)).Add(Restrictions.Like("Firstname","Y%")).AddOrder(newNHibernate.Criterion.Order("Firstnamefalse))•AddOrder(newNHibernate•Cri

8、terion.Order("Lastname",true)).List();}2.一些说明条件查询同样支持关联查询、

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。