close
NHibernate提供了3種較常使用的方式來查詢資料庫,分別是為ICriteria、IQuery、ISQLQuery,ICriteria是NHibernate內建提供物件來取代Query語法,對於用慣SQL Query的我來說,其實看起來有點不大習慣,不想看到Query語法時,用用這個也不錯

NHibernate版本為1.2.0.CR1

ICriteria由ISession產生即可
ISession sess = XXXXXXXX;
ICriteria ic = sess.CreateCriteria(typeof(object));  //object為要查詢的物件名

假設有一個員工Employee Object,要查詢編號ID=1111的員工
ICriteria ic = sess.CreateCriteria(typeof(Employee));
ic.Add(Expression.Eq("ID", 1111));
使用ICriteria時,查詢條件都由Expression控制,Sql語法有的大於小於等於、Not、In、Is null、is not null都由此元件設定,ID指的是object property,1111是value,value需配何property的型態,所以如果ID是字串型態,那麼1111就要寫成"1111"

多個查詢條件未特別註明時,都以And串連起來,所以如果想要查性別女及地址在台北市的員工
ic.Add(Expression.Eq("Sex", "F"));
ic.Add(Expression.Eq("Area", "台北市"));

若想查詢住在台北市或高雄市的員工,可以使用Or
OrExpression or = new OrExpression(Expression.Eq("Area", ”台北市”), Expression.Eq("Area","高雄市"));
ic.Add(or);
或者是直接ic.Add(Expression.Or(Expression.Eq("Area", ”台北市”), Expression.Eq("Area","高雄市")));

And也是相同用法,AndExporession或Expression.And
arrow
arrow
    全站熱搜

    momokao 發表在 痞客邦 留言(1) 人氣()