代码之家  ›  专栏  ›  技术社区  ›  onkami

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

  •  1
  • onkami  · 技术社区  · 10 年前

    使用 NHibernate ,我需要检索匹配特定条件的行(例如, 项目ID==1245 ).

    如果我得到了ISession对象并且能够查询,我该如何做到这一点? 如果有多行匹配,我该怎么做?

    2 回复  |  直到 10 年前
        1
  •  1
  •   dove    10 年前

    假设您映射了一个名为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 此列表

        2
  •  1
  •   Frederik Gheysels    10 年前

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

    var entity = session.Get (1245);
    

    ISession的Get和Load方法被优化为通过主键检索实体。

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