icriteria icriteria = _sessionfactory.getcurrentsession().createcriteria(typeof(cardtype));
if (cardtype.cardtypeid != null)
if (cardtype.cardtypeid != null)
if (cardtype.cardtypeid != null)
if (cardtype.cardtypeid != null)
////string username="name";
//var expr = predicatebuilder.true();
//if (!string.isnullorempty(namekeyword))
//var expr = predicatebuilder.true();
if (cardtype.cardtypeid != null)
_cardtyperepository.query().where(expr);
首先是nhibernate最基本的查詢方式:以isession的createquery方法建立sql語句,返回相應資料,因為是sql,這裡只簡單列舉幾個查詢, 其他的自己下去操作下就行了。
下面的_session和入門2裡面的queryhql.cs一致。
查詢customer所有資料:_session.createquery("from customer").list();
返回多個物件或屬性/字段:return _session.createquery("select c.firstname, count(c.firstname) from customer c group by c.firstname").list();
注意這裡返回的是list
返回單一字段:return _session.createquery("select c.customerid from customer c").list();
注意返回型別,這裡customerid 是int型別,所以返回list();
根據條件返回:
有以下3種寫法,第一種大家都明白,但容易注入,第二種和第三種和.net中的string.format差不多。
public
ilist
<
customer
>
getcustomersbyfirstname(
string
firstname)
複製**
以上是最基本的查詢,都和sql一致,這裡不多講解。下面就是nhibernate的criteria來實現條件查詢
criteria簡單的說就是把根據你設定好的表示式來返回資料,還是看**,這樣直觀:
public
ilist
<
customer
>
createcriteria()
複製**
首先使用isession介面的createcriteria方法建立了nhibernate.icriteria介面乙個特定的持久化類的查詢例項,其中typeof
(customer) 是例項名,第二條**是設定返回50條資料集合,可以理解為top 50。
接下來是用add新增乙個restrictions類中的約束表示式,restrictions中提供大量的常用約束,或者直觀的說是條件:
public
ilist
<
customer
>
narrowing()
複製**
再就是排序,使用criterion.order進行排序,其中true為asc(公升序),false為desc(降序):
public
ilist
<
customer
>
order()
複製**
還有乙個example類,可以根據你指定的例項創造查詢條件,可以理解為自定義查詢條件:
public
ilist
<
customer
>
query()
;return
_session.createcriteria(
typeof
(customer))
.add(example.create(customersample))
.list
<
customer
>
();}
複製**
先建立個customersample例項,用.add(example.create(customersample))新增,最後會根據example和設定nhibernate返回其物件集合。
這篇文章極其簡單,因為個人覺得沒什麼可講的,除非你沒學過t-sql。
這次講的是查詢,下次講非查詢額和事務。源**這次就不上了。
Nhibernate查詢語句
本節內容 nhibernate中的查詢方法 nhibernate查詢語言 hql 1.from子句 2.select子句 3.where子句 4.order by子句 5.group by子句 例項分析 結語nhibernate中的查詢方法 在nhibernate中提供了三種查詢方式給我們選擇 nh...
NHibernate查詢優化的相關資料
一.1.立即載入 lazy false 並不能在所有情況下都會減少sql語句,同時還會帶來過量讀取資料的嚴重後果 由上面的分析可知,關聯實體和集合最好保持預設的延遲載入,所以我在實際的開發中是不進行任何lazy false設定的。如果要同時載入關聯實體或集合,最有效的方法就是編寫join和 dyna...
NHibernate分頁獲取,通用條件查詢方法
解決問題 解決ui上使用nhibernate通用查詢方法 僅適用於多個條件聯合查詢 第一步 在ui層建立構造條件方法 private ilistgetcondition string customername string address if string.isnullorempty addres...