国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

NHibernate中的IQueryable和IQueryover

2019-11-15 02:27:17
字體:
供稿:網(wǎng)友

NHibernate中的IQueryable和IQueryover

2014-01-14 16:09 by 無眠, ... 閱讀, ... 評(píng)論, 收藏, 編輯

今天在做一個(gè)小項(xiàng)目時(shí),用到了NHibernate,使用了模糊查詢(Like),在后臺(tái)用IQueryable去接收session.Query<T>()的查詢結(jié)果。

代碼如下:

1         /// <summary>2         /// 獲取所有記錄3         /// </summary>4         /// <returns></returns>5         public virtual IQueryable<T> LoadAll()6         {7             var result = Session.Query<T>();8             return result;9         }

在BLL層想用NHibernate的Where去做模糊查詢,查了好多資料可以有兩種方式:

第一種:

  .Where(Restrictions.On<Cat>(c => c.Name).IsLike("%anna%"))

第二種:

  .WhereRestrictionOn(c => c.Name).IsLike("%anna%")

然后調(diào)用base.LoadAll(),但是base.LoadAll()后面的WhereRestrictionOn怎么也出不來,郁悶!!

在再試第一種方式,也不對(duì)。。。

休息一會(huì),回來再看,原來底層函數(shù)的返回值是IQueryable,不是IQueryover。

IQueryover:是NHibernate類庫中的一個(gè)接口,可以使用QueryOver查詢。

IQueryable:是Linq中的一個(gè)接口,與NHibernate無關(guān)。

最后修改為L(zhǎng)inq的語法Where(n=>n.Name.Contains(name))(原來這么簡(jiǎn)單!):

 1         /// <summary> 2         /// 獲取用戶 3         /// </summary> 4         /// <param name="count">總數(shù)</param> 5         /// <param name="pageIndex">頁索引</param> 6         /// <param name="pageSize">頁記錄數(shù)</param> 7         /// <param name="name">搜索條件:用戶名</param> 8         /// <returns></returns> 9         public IQueryable<User> LoadUserByName(out long count, int pageIndex, int pageSize, string name)10         {11             var result = base.LoadAll().Where(n=>n.Name.Contains(name));12             count = result.LongCount();13 14             return result.Skip((pageIndex - 1) * pageSize).Take(pageSize);15         }

查看生成的SQL語句:

1 2014-01-14 15:07:28,155 [55] INFO  NHibernate.Loader.Loader [(null)] <(null)> - select cast(count(*) as INTEGER) as col_0_0_ from T_User user0_ where user0_.Name like ('%'||@p0||'%')2 2014-01-14 15:07:28,159 [55] INFO  NHibernate.Hql.Ast.ANTLR.Tree.FromElement [(null)] <(null)> - handling PRoperty dereference [DomainModel.User (n) -> Name (Class)]3 2014-01-14 15:07:28,160 [55] INFO  NHibernate.Loader.Loader [(null)] <(null)> - select user0_.UserId as UserId0_, user0_.Name as Name0_, user0_.PassWord as Password0_, user0_.Telephone as Telephone0_, user0_.Email as Email0_, user0_.IsDeleted as IsDeleted0_ from T_User user0_ where user0_.Name like ('%'||@p0||'%') limit 10

總結(jié):

1.沒有對(duì)NHibernate的查詢理解透;

2.對(duì)Linq的語法也不熟悉;

此處寫下來,留作備注,下次參考。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 寿光市| 房产| 寿阳县| 安达市| 天全县| 叶城县| 镇江市| 北安市| 玉门市| 台中县| 宁德市| 大渡口区| 江达县| 汾阳市| 女性| 手机| 德令哈市| 吉首市| 林甸县| 禹州市| 泗水县| 子长县| 深水埗区| 土默特右旗| 吐鲁番市| 安泽县| 正安县| 洞口县| 福鼎市| 突泉县| 西宁市| 崇仁县| 庆安县| 台山市| 盱眙县| 筠连县| 怀集县| 抚州市| 聊城市| 滦南县| 安塞县|