NHibernate框架的HQL增删改查
NHibernate提供有很多种查询方式给我们选择,如:
1、NHibernate查询语言(HQL,NHibernate Query Language)
2、条件查询(Criteria API,Query By Example(QBE)是Criteria API
的一种特殊情况)
3、原生SQL(Literal SQL,T-SQL、PL/SQL)。
这回我们来谈论一下NHibernate查询语言(HQL,NHibernate Query Language)
是NHibernate特有的基于面向对象的SQL查询语言,它具有继承、
多态和关联等特性。实际上市用OOP中的对象和属性映射了数据库中的表和列。
我们就继续上一回发过的教程继续那个例子接着讲
1、from子句
1)、返回表中所有数据
public IList<Person> GetList()
{
return _session.CreateQuery("from Person").List<Person>();
}
2)、使用as来赋予表的别名,as可以省略
public IList<Person> GetList()
{
return _session.CreateQuery("from Person as p").List<Person>();
}
2、select子句
1)、在结果集中返回指定的对象和属性
public IList<int> Select()
{
//返回所有Person的ID
return _session.CreateQuery("select p.ID from Person p").List<int>();
}
3、通过ID获取对象
public Person GetPersonByID(int id)
{
Person model = _session.Get<Person>(id);
_session.Close();
return model;
}
4、添加记录
public bool InsertPerson(Person person)
{
int newid=(int)_session.Save(person);
_session.Flush();
return newid>1?true:false;
}
5、更新记录
public bool UpdatePerson(Person person)
{
bool bol=true;
try
{
_session.Update(model);
_session.Flush();
}
catch
{
bol=false;
}
return bol;
}
6、删除记录
public bool DeletePerson(Person model)
{
//逻辑删除
bool bol = true;
try
{
_session.Delete(model);
_session.Flush();
}
catch
{
bol = false;
}
return bol;
}