真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

EntityFrameworkCore踩坑實(shí)例分析

這篇文章主要介紹“Entity Framework Core踩坑實(shí)例分析”,在日常操作中,相信很多人在Entity Framework Core踩坑實(shí)例分析問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Entity Framework Core踩坑實(shí)例分析”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、葉集網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

  • 請(qǐng)大家審閱以下代碼的區(qū)別

        [Route("/crmorders/gettomonthtotal")]        public string GetOrdersToMonthTotal(string monStr, string sdept,int page=1,int limit= 20)        {            using (var db = new hibiContext())            {                var dateMonthFD = monStr.ToDateTime().GetMonthFirstDay();                var dateMonthLD = monStr.ToDateTime().GetMonthLastDay();        //獲取數(shù)據(jù)集的總條數(shù)                var count = db.BivCrmProdordersOri.Count();
       //linq表達(dá)式的正確寫法                var dataLinq01 = (from o in db.BivCrmProdordersOri                            where o.DictDtlNameBus == sdept && o.AcceptDate >= dateMonthFD && o.AcceptDate <= dateMonthLD                            orderby o.AcceptDate                            select o).Skip((page - 1) * limit).Take(limit).ToList();        //linq表達(dá)式的錯(cuò)誤寫法                var dataLinq02 = (from o in db.BivCrmProdordersOri                            where o.DictDtlNameBus == sdept && o.AcceptDate.Value.ToString("yyyy-MM") == monStr                            orderby o.AcceptDate                            select o).Skip((page - 1) * limit).Take(limit).ToList();                      //lambda表達(dá)式的正確寫法                var dataLambda01 = db.BivCrmProdordersOri                    .Where(o => o.DictDtlNameBus == sdept && o.AcceptDate >= dateMonthFD && o.AcceptDate <= dateMonthLD)                    .OrderByDescending(o => o.AcceptDate)                    .Skip((page - 1) * limit)                    .Take(limit)                    .Select(o=>o)                    .ToList();                  //lambda表達(dá)式的錯(cuò)誤寫法                var dataLambda02 = db.BivCrmProdordersOri                    .Where(o => o.DictDtlNameBus == sdept && o.AcceptDate.Value.ToString("yyyy-MM") == monStr)                    .OrderByDescending(o => o.AcceptDate)                    .Skip((page - 1) * limit)                    .Take(limit)                    .Select(o => o)                    .ToList();
               var ret = new { code = 0, msg = "", count = count, data = data3};                var json = Newtonsoft.Json.JsonConvert.SerializeObject(ret);                return json;            }        }

        以前使用linq和lambda表達(dá)式的時(shí)候,習(xí)慣性的會(huì)把集合對(duì)象的熟悉,格式化成目標(biāo)格式后再和參數(shù)做比較,來(lái)進(jìn)行過(guò)濾。

        測(cè)試了ef的寫法后,發(fā)現(xiàn)ef在生成sql時(shí)并不支持對(duì)linq和lambda這種表達(dá)式的翻譯。

        其實(shí)通過(guò)思考也能明白,在對(duì)字段進(jìn)行格式化的時(shí)候,ef生成sql過(guò)程中肯定會(huì)調(diào)用數(shù)據(jù)庫(kù)函數(shù)來(lái)進(jìn)行這部分翻譯,實(shí)際上本身這種where條件的寫法是犧牲性能的。

          更應(yīng)該建議使用下列值類型比較的方法來(lái)達(dá)到目的。

          或者,可以將datetime字段從數(shù)據(jù)庫(kù)中直接轉(zhuǎn)成string類型,再進(jìn)行篩選,還可以借助數(shù)據(jù)庫(kù)索引提升性能。

到此,關(guān)于“Entity Framework Core踩坑實(shí)例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


分享名稱:EntityFrameworkCore踩坑實(shí)例分析
分享URL:http://weahome.cn/article/jhojce.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部