public class CriteriaQuery
{
ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
public void SimpleQueries()
{
using (ISession session = sessionFactory.OpenSession())
{
var result = (int) session.CreateCriteria(typeof (Customer)).SetProjection(Projections.RowCount()).UniqueResult();
session.CreateCriteria(typeof (Customer))
.CreateCriteria("Orders", "o")
.Add(Restrictions.Gt("o.Value", 90m))
.List<Customer>();
session.CreateCriteria<Customer>()
.CreateCriteria("Orders", "o")
.SetProjection(Projections.RowCount())
.SetProjection(Projections.GroupProperty("LastName"))
.SetProjection(Projections.Max("o.Value"))
.List();
foreach (Customer customer in session.CreateCriteria<Customer>().List<Customer>())
{
int orderCound = customer.Orders.Count;
}
Console.WriteLine("SimpleQueries_CustomerCount:" + result);
}
}
// NHibernate3新出了新的查询API QueryOver。本节将为您介绍这查询API QueryOver的相关内容。
//QueryOver构建在NHibernate原有的ICriteria API之上,支持Lambda表达式与扩展方法。
public void QueryOver()
{
using (ISession session = sessionFactory.OpenSession())
{
int result = session.QueryOver<Customer>().RowCount();
IList<Customer> customers =
session.QueryOver<Customer>().JoinQueryOver<Order>(cust => cust.Orders).Where(
o => o.Value > 90).List<Customer>();
IList<object> results =
session.QueryOver<Customer>()
.SelectList(list =>
list.SelectGroup(c => c.LastName))
.JoinQueryOver<Order>(cust => cust.Orders).List<object>();
Console.WriteLine("QueryOver_CustomerCount:"+result);
}
}
}
HQLQuery.cs查询类
public class HQLQuery
{
ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
public void SimpleQueries()
{
using (ISession session = sessionFactory.OpenSession())
{
long result = (long) session.CreateQuery("selectcount(*) from Customer").UniqueResult();
IList<Customer> customers =
session.CreateQuery("select cust from Customer as cust innerjoin cust.Orders asorderwhereorder.Value > 90").List
<Customer>();
IList results = session.CreateQuery(
"select cust.LastName, max(o.Value) from Customer as cust innerjoin cust.Orders as o groupby cust.LastName").List();
Console.WriteLine("HQLQuery_SimpleQueries:" + result);
}
}
}