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