接着来学习条件查询(Criteria Queries)
1、创建ICriteria
NHibernate.ICriteria接口支持特定条件的查询。ISession可以创建ICriteria实例。
2、使用Restrictions添加查询条件
Restrictions是hibernate3代替hibernate2中的Expression,但在hibernate3中Expression还是可以使用的
3、使用Order排序
使用ICriteria.Order对结果集排序,第二个参数true代表asc,false代表desc。
4、其他查询
QBE 摘自:NHibernate之旅(4):探索查询之条件查询(Criteria Query)
根据示例查询(QBE,Query By Example)是条件查询的一种特殊情况,NHibernate.Criterion.Example类根据你指定的实例创造查询条件。其典型的用法:创建一个Example实例;在Example实例上设置值;根据Example和设置NHibernate返回其对象集合。
例如下面的例子,按照指定Customer查询数据库里的记录:
public IList<Customer> Query() { Customer customerSample = new Customer() { Firstname = "YJing", Lastname = "Lee" }; return _session.CreateCriteria(typeof(Customer)) .Add(Example.Create(customerSample)) .List<Customer>(); }
你可以自行调整Example使之更实用:
public IList<Customer> UseQueryByExample_GetCustomer(Customer customerSample) { Example example = Example.Create(customerSample) .IgnoreCase() .EnableLike() .SetEscapeCharacter('&'); return _session.CreateCriteria(typeof(Customer)) .Add(example) .List<Customer>(); }
还有HQL。暂时不学习~~