NHibernate HQL查询

时间:2010-11-05 16:57:08

标签: c# nhibernate hql

如何使用NHibernate编写HQL查询。我必须包含哪些名称空间才能使一切正常。实际上我有两张桌子票和旅行,我想要计算Trip中没有票证中相应条目的所有记录。票证中有一个tid字段,可以引用Trip id。任何人都可以从一开始就解释我如何为此编写NHibernate HQL查询?

2 个答案:

答案 0 :(得分:3)

您不需要任何特殊的命名空间来使用HQL。只需创建一个简单的NHibernate项目,就可以立即开始编写HQL。

以下是来自新NHibernate 3.0 Cookbook的示例,您还应该查看Nhibernate in Action一书,其中有关于HQL的更详细的示例。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Cfg;
using NHibernate;

namespace ExecutableHQL
{
  class Program
  {
    static void Main(string[] args)
    {
      log4net.Config.XmlConfigurator.Configure();
      var nhConfig = new Configuration().Configure();
      var sessionFactory = nhConfig.BuildSessionFactory();

      using (var session = sessionFactory.OpenSession())
      {
        using (var tx = session.BeginTransaction())
        {
          int count = (int) session.CreateQuery("select count(*) from Trip").UniqueResult();

          tx.Commit();
        }
      }
    }
  }
}

答案 1 :(得分:0)

    [HttpGet]
    public int GetCount()
    {
        var myQuery = session.CreateQuery(@" 
        select COUNT(*) from Table as t where 
        t.Id = :Id");
        myQuery.SetParameter("Id", this.Id);
        int count = Convert.ToInt32(myQuery.UniqueResult());
        return count;
    }