zoukankan      html  css  js  c++  java
  • 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映射的实体属性对应!

    回到目录

  • 相关阅读:
    遗传算法求解旅行商(TSP)问题 -- python
    office 小技巧
    oracle创建dblink
    c# equals与==的区别
    两人之间的一些参数
    .net 枚举(Enum)使用总结
    SQL Server 日期的加减函数: DATEDIFF DATEADD
    jquery操作select
    AS3帮助手册
    Razor和HtmlHelper的使用意义
  • 原文地址:https://www.cnblogs.com/lori/p/5132665.html
Copyright © 2011-2022 走看看