NHibernate - 如何获取具有特定列值的项目

时间:2014-02-26 12:36:43

标签: c# nhibernate

使用NHibernate,我需要检索符合特定条件的行(例如, ProjectId == 1245 )。

我怎么能这样做,只要我有ISession对象并且能够查询? 如果有很多行匹配,我该怎么做?

2 个答案:

答案 0 :(得分:1)

假设您有一个名为Project的对象映射,看起来这个id是唯一的,那么您可以使用:

var firstProjectMatching = (from p in session.Query<Project>() 
                               where p.Id == 1245
                               select p).FirstOrDefault();

如果您认为可能有很多,那么您可以算一下

   var projectCount = (from p in session.Query<Project>() 
                                   where p.Id == 1245
                                   select p.Id).ToList().Count;

如果你想要他们所有的数据

var projects = (from p in session.Query<Project>() 
                                       where p.Id == 1245
                                       select p).ToList();

您可以.Count此列表

答案 1 :(得分:1)

假设ProjectId是主要标识符(在NH映射中使用身份映射),那么您应该使用

var entity = session.Get (1245);

ISession的Get和Load方法已经过优化,可以通过主键检索实体。

如果要使用非主键的属性检索实体,则应使用HQLICriteriaQueryOver