从 ISession 接口中创建 ICriteria 实例对象;在这个 ICriteria 实例对象上设置
一个或多个表达式;要求 ICriteria 接口返回需要的列表,就是根据表达式从数据库中返回
对象
1.创建 ICriteria 实例
使用 ISession 接口的 CreateCriteria 方法创建了 NHibernate.ICriteria 接口一个特定的
持久化类的查询实例,也可以说 ISession 是用来制造 Criteria 实例的工厂
下面例子
返回 News对象集合,设置最大的集合数量为 50 条
public IList<News> CreateCriteria()
{
ICriteria crit = session.CreateCriteria(typeof(News));
crit.SetMaxResults(50);
IList<News> customers = crit.List<News>();
return customers;
}
Code language: HTML, XML (xml)
2.结果集限制
使用 ICriteria 接口提供的 Add 方法添加 Restrictions 类中约束表达式可以限制一些结果集的作用。
public IList<News> Narrowing()
{
//IList<News> news = session.CreateCriteria(typeof(News)).Add(Restrictions.Like("Title", "北%")).List<News>();
IList<News> news = session.CreateCriteria(typeof(News))
.Add(Restrictions.Like("Title", "北%"))
.Add(Restrictions.Between("ID", 1, 100))
.List<News>();
return news;
}
Code language: PHP (php)
3.结果集排序
使用 ICriteria.Order 对结果集排序,第二个参数 true 代表 asc, false 代表 desc。例如
下面例子查询 News对象按 Title降序、 Content升序。
public IList<News> Order()
{
return session.CreateCriteria(typeof(News))
.Add(Restrictions.Like("Title", "您%"))
.AddOrder(new Order("Title", false))
.AddOrder(new Order("Content", true))
.List<News>();
}
Code language: PHP (php)
public IList<News> Order()
{
return session.CreateCriteria(typeof(News))
.Add(Restrictions.Like("Title", "您%"))
.AddOrder(new Order("ID", false))
.AddOrder(new Order("AddTime", true))
.List<News>();
}
Code language: PHP (php)
Previous: group by分组查询
Next: 根据示例查询(Query By Example)