2010-12-05 79 views
0

通过暑期的nHibernate教程已经涉及到查询部分。似乎自从该系列作品发布以来已经发生了变化。于是我去了在线文档的NHB 3.0,但这样的代码:nHibernate 3.0查询

IList cats = session.CreateCriteria(typeof(Cat)) 
      .Add(Expression.Like("Name", "Fritz%")) 
      .Add(Expression.Between("Weight", minWeight, maxWeight)) 
      .List(); 

生成错误

典“这个名字‘表达’在目前情况下不存在”,如:

return session.CreateCriteria(typeof(DataTransfer.Customer)) 
      .Add(new NHibernate.Criterion.LikeExpression("Firstname", firstname)) 
      .Add(new NHibernate.Criterion.LikeExpression("Lastname", lastname)) 
      .List<Customer>(); 

工程,但它似乎缺少一些查询方法,如GtExpression。 在线文档是否是最新的,如果是这样,为什么我不能使用表达式... 如果在线文档不是最新的,那么我在哪里可以获得Criterion界面的描述? 谢谢

回答

3

你忘了添加using NHibernate.Criterion;

无论如何,Expression类已被弃用。改为使用Restrictions

+0

是的,谢谢,我错过了使用声明,并强调“限制”是为什么文档让我感到困惑。 – 2010-12-06 03:01:10

0

奇怪的事情。我仍然使用Expression。*静态方法,这些仍然有效。你确定你使用最新版本的NH3.0吗?我使用Alpha 2版本。

如果您需要迫切的工作,让我们尝试QueryOver <>功能:

return session.QueryOver<DataTransfer.Customer>() 
    .WhereRestrictionOn(u => u.Name).IsLike("Fritz%") 
    .AndRestrictionOn(u => u.Weight).IsBetween(minWeight).And(maxWeight) 
    .List(); 

它非常适合于简单的查询