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


回到目錄

在進行統計時,尤其是按月進行統計,由於我們采用的時間是一個2015-12-12日這種,所以在linq你無法進行拆分,你拆分了在發到SQL時也會報錯,因為SQL那邊更新不需要你.net的方法,人家SQL只認自己的方法,哈哈,這也是正常的,為了解決這個問題,我們有時也需要使用純SQL,當前也是基於EF的,通過EF的上下文把SQL語句發到數據庫。

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

       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的結果

再看一下網頁上顯示的結果

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

回到目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM