用NHibernate做查询

时间:2009-12-30 20:40:00

标签: .net nhibernate

我是NHibernate的新手,所以这是一个基本问题..

当通过NHibernate会话从数据库中获取数据时,我目前只使用Id来完成它,例如像这样:

var customer = Session.Get<Customer>(customerId); 

但是如何根据不是Id的属性获取对象?例如。通过搜索Name属性来获取客户。这可能会返回0-n答案,所以我假设我会得到一个列表?

4 个答案:

答案 0 :(得分:4)

另一个选项 - Linq2NHibernate最近获得more and more mature

用法看起来像这样=&gt;

var employees = Session.Linq<Employee>()
    .Single(employee=>employee.Name==name);

Linq扩展方法返回实现IQueryable的INHibernateQueryable接口。

答案 1 :(得分:2)

使用HQL看起来像:

session.CreateQuery("from Customer where Name=:name")
       .SetString("name", name)
       .List<Customer>();

答案 2 :(得分:2)

您基本上有两个选项:HQLCriteria API。 Hibernate文档太棒了,所以我强烈建议你阅读它,而不是让我发布一个不必要的详细答案。

答案 3 :(得分:2)

有很多方法可以查询NHibernate:

  • HQL
  • 标准
  • 按示例查询
  • 查询条件
  • LINQ(提供2种不同的linq提供商)
  • H-SQL
  • SQL
  • 您可以实施自己的查询方式