欢迎来到天天文库
浏览记录
ID:21814929
大小:55.00 KB
页数:5页
时间:2018-10-24
《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.一些说明条件查询同样支持关联查询、
此文档下载收益归作者所有