NHibernate的幾種查詢方式
SQL:普通SQL查詢(也就是SQLServer,Oracle,Sybase等數據庫的查詢語句,建議使用基於TSQL-92)
核心對象:CreateSQLQuery
IList list = session.CreateSQLQuery(select * from TabUser).AddEntity(typeof(TabUser)).List();
HQL:Hibernate查詢
核心對象:CreateQuery
IList list = session.CreateQuery(“from TabUser t where t.id>:id”).SetString(“id”, “10”).List();
Criteria:標準或條件查詢,ICriteria有很多屬性和方法可供選擇,有利於構建動態運行時查詢,也就是說此方式可以構建很複雜的查詢。
核心對象:CreateCriteria
IList list = session.CreateCriteria(typeof(TabUser)).List();
Lambda:表達式查詢
在NHibernate 3.0以上版本,使用Lambdas強類型。
核心對象:QueryOver
IList list = isession.QueryOver(typeof(TabUser)).List();
Linq:Linq查詢
NHibernate 2 and 2.1: ISession.Linq
核心對象:Linq
IList list = from t in session.Linq() select t;
NHibernate 3.0: ISession.Query
核心對象:Query
IList list = from t in session.Query() select t;
Spring.NET:Spring.NET方式
using Spring.Dao;
using Spring.Data.NHibernate.Support;
核心對象:HibernateTemplate
IList list = HibernateTemplate.Find(hql);
注意此處的hql語句請參考上面的Hibernate查詢
注:HibernateTemplate不僅僅只有Find,還有各種Save,Update,Delete等等語句的用法。
同理ISession對象也有Save,Update,Delete等等語句的用法,只是要最後需要session.Flush()一下才能提交數據,當然這些已經是屬於數據庫的CRUD語句,已經超出此篇文章的範圍,故不在此累述。
版權所有,轉載請註明文章出處 http://blog/csdn.net/cadenzasolo