中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

EF架構~有時使用SQL更方便

回到目錄

在(zai)進(jin)行統(tong)計時(shi)(shi)(shi),尤其是(shi)按月進(jin)行統(tong)計,由于我們(men)(men)采用的(de)時(shi)(shi)(shi)間(jian)是(shi)一個2015-12-12日這(zhe)種,所以在(zai)linq你無法(fa)進(jin)行拆(chai)分,你拆(chai)分了(le)在(zai)發到SQL時(shi)(shi)(shi)也會報錯,因為SQL那邊更新不需(xu)要(yao)(yao)你.net的(de)方法(fa),人家SQL只認(ren)自己的(de)方法(fa),哈哈,這(zhe)也是(shi)正常的(de),為了(le)解決(jue)這(zhe)個問題,我們(men)(men)有時(shi)(shi)(shi)也需(xu)要(yao)(yao)使(shi)用純SQL,當前也是(shi)基于EF的(de),通過EF的(de)上(shang)下文把SQL語(yu)句發到數(shu)據庫。

下面是一(yi)個比較復雜的統(tong)計,按月把某個用戶(hu)的某個任務進(jin)行(xing)求和及求總數的統(tong)計,看一(yi)下代碼

       var idArr = user_FighterRepository.GetModel(i => i.ParentID == companyId).Select(i => i.UserID).ToList();
            string para= string.Join(",", idArr);
            var linq = Db.Database.SqlQuery<FighterTaskTotalDTO>(
             @"SELECT  CONVERT(CHAR(7), Day, 120) as TotalDate,
                                    COUNT(*)  as TaskCount,
                                    FighterID ,
                                    SUM(FinishedNumber) as FinishedCount
                            FROM    dbo.Count_Fighter_ByDay
                            GROUP BY FighterID ,
                                    CONVERT(CHAR(7), Day, 120)
                            HAVING  FighterID IN ("+para+")");
            return linq.ToList();

看你下SQL的結果

再(zai)看一下網(wang)頁上顯示的(de)結果

最后需要注意一點,就是你的SQL語句的每個字段必須要有別名,如你的count(*)統計,需要為它起的別名,并且你的別名要和EF映射的實體屬性對應!

回到目錄

posted @ 2016-01-15 10:58  張占嶺  閱讀(3164)  評論(2)    收藏  舉報