国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
MongoDB學(xué)習(xí)筆記~為IMongoRepository接口添加了排序和表達(dá)式樹,針對官方驅(qū)動

回到目錄

MongoDB的官方驅(qū)動,語法更好,更強(qiáng)

之前寫過關(guān)于IMongoRepository倉儲的文章,在mongodb的驅(qū)動選擇上使用了NoRM,但是進(jìn)行$ref引用類型導(dǎo)航時出現(xiàn)了問題,它對引用類型屬性支持不是很好,還是使用幾年前的泛型技術(shù)而沒有使用Attribute,在這個方面官方驅(qū)動做的更好,所以,我還是使用官方驅(qū)動又實(shí)現(xiàn)了一次IMongoRepository,把一些實(shí)現(xiàn)的細(xì)節(jié)封裝在了底層,我們叫這個官方倉儲為MongoOfficialRepository,呵呵,誰叫你來的晚呢,MongoRepository已經(jīng)為NoRM占上了,呵呵。

新的IMongoRepository接口內(nèi)容添加了4個方法

        /// <summary>        /// 官方驅(qū)動,返回帶分頁的結(jié)果集        /// </summary>        /// <param name="pageIndex"></param>        /// <param name="pageSize"></param>        /// <returns></returns>        PagedResult<TEntity> GetModel(int pageIndex, int pageSize);        /// <summary>        /// 官方驅(qū)動,返回帶條件和分頁的結(jié)果集        /// </summary>        /// <param name="expression"></param>        /// <param name="pageIndex"></param>        /// <param name="pageSize"></param>        /// <returns></returns>        PagedResult<TEntity> GetModel(Expression<Func<TEntity, bool>> expression, int pageIndex, int pageSize);        /// <summary>        /// 官方驅(qū)動,返回帶排序和分頁的結(jié)果集        /// </summary>        /// <param name="fields"></param>        /// <param name="pageIndex"></param>        /// <param name="pageSize"></param>        /// <returns></returns>        PagedResult<TEntity> GetModel(Dictionary<Expression<Func<TEntity, object>>, bool> fields, int pageIndex, int pageSize);        /// <summary>        /// 官方驅(qū)動,返回帶條件和排序及分頁的結(jié)果集        /// </summary>        /// <param name="expression"></param>        /// <param name="fields"></param>        /// <param name="pageIndex"></param>        /// <param name="pageSize"></param>        /// <returns></returns>        PagedResult<TEntity> GetModel(Expression<Func<TEntity, bool>> expression, Dictionary<Expression<Func<TEntity, object>>, bool> fields, int pageIndex, int pageSize);

對這四大方法的實(shí)現(xiàn),為了不讓MongoDB的更多細(xì)節(jié)公開,所以,更多的內(nèi)核只能在倉儲中實(shí)現(xiàn)了,呵呵

        public PagedResult<TEntity> GetModel(int pageIndex, int pageSize)        {            return GetModel(i => true, pageIndex, pageSize);        }        public PagedResult<TEntity> GetModel(Expression<Func<TEntity, bool>> expression, int pageIndex, int pageSize)        {            return GetModel(expression, new Dictionary<Expression<Func<TEntity, object>>, bool>(), pageIndex, pageSize);        }        public PagedResult<TEntity> GetModel(            Dictionary<Expression<Func<TEntity, object>>, bool> fields,            int pageIndex,            int pageSize)        {            return GetModel(i => true, fields, pageIndex, pageSize);        }        public PagedResult<TEntity> GetModel(            Expression<Func<TEntity, bool>> expression,            Dictionary<Expression<Func<TEntity, object>>, bool> fields,            int pageIndex,            int pageSize)        {            SortDefinition<TEntity> sorts = new ObjectSortDefinition<TEntity>(new { });            foreach (var item in fields)            {                if (item.Value)                    sorts = sorts.Ascending(item.Key);                else                    sorts = sorts.Descending(item.Key);            }            var skip = (pageIndex - 1) * pageSize;            var limit = pageSize;            var recordCount = _table.CountAsync<TEntity>(i => true).Result;            return new PagedResult<TEntity>(                recordCount,                (int)(recordCount + pageSize - 1) / pageSize,                pageSize,                pageIndex,                _table.Find(expression)                      .Sort(sorts)                      .Skip(skip)                      .Limit(limit)                      .ToListAsync().Result);        }

OK,現(xiàn)在你可以在業(yè)務(wù)層去調(diào)用它了,基本上面四個方法可以滿足你的一切需求了,呵呵!

看下在UI層對它的調(diào)用,本DEMO沒有BLL層,呵呵

    public ActionResult Index(int? loginNameSort, int? realNameSort, int page = 1)        {            Dictionary<Expression<Func<WebManageUsers, object>>, bool> sortList = 
new System.Collections.Generic.Dictionary<Expression<Func<WebManageUsers, object>>, bool>(); if (loginNameSort.HasValue) sortList.Add(i => i.LoginName, loginNameSort.Value == 0); if (realNameSort.HasValue) sortList.Add(i => i.RealName, realNameSort.Value == 0); var model = _webManageUsersRepository.GetModel(sortList, page, 10); return View(model); }

 

 

怎么樣,看了上面代碼是否心里癢癢了,哈哈,趕快去開發(fā)你自己的MongoDB倉儲吧!

回到目錄

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ASP.NET MVC5 網(wǎng)站開發(fā)實(shí)踐(一) - 框架(續(xù)) 模型、數(shù)據(jù)存儲、業(yè)務(wù)邏輯
第六篇 項(xiàng)目疑問
.Net Core對MongoDB執(zhí)行多條件查詢
三層架構(gòu)搭建(asp.net mvc + ef)
EntityFramework.Extended擴(kuò)展用法
Linq To Sql進(jìn)階系列(六)用object的動態(tài)查詢與保存log篇
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服