我是NHibernate的新手,所以这是一个基本问题..
当通过NHibernate会话从数据库中获取数据时,我目前只使用Id来完成它,例如像这样:
var customer = Session.Get<Customer>(customerId);
但是如何根据不是Id的属性获取对象?例如。通过搜索Name属性来获取客户。这可能会返回0-n答案,所以我假设我会得到一个列表?
答案 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)
您基本上有两个选项:HQL和Criteria API。 Hibernate文档太棒了,所以我强烈建议你阅读它,而不是让我发布一个不必要的详细答案。
答案 3 :(得分:2)
有很多方法可以查询NHibernate: