EF中自编写SQL脚本查询结果(适用于复杂SQL逻辑提高查询效率)

前不久项目开发过程中,使用的是Entity Framework做数据处理。因为本人也不是对EF太有研究,只是会用而已,但是在一次需要查询的结果需要关联3、4个表来查询出来结果,并且对查询效率也有要求。但是个人觉得遇到这样的情况还是使用原始SQL语句来查询更为可控(或许EF中有更好的方法可以解决此类问题,但恕本人愚笨只想到了这种方法)。就又自己扩展出一个方法,用来专门查询自定义编写的SQL语句。代码如下:

 public List<T> ExecuteStoreQuery(string commandText, params object[] parameters)
        {
            using (var db = GetEntity())
            {
                var objectList = db.ExecuteStoreQuery<T>(commandText, parameters).ToList();
                return objectList;
            }
        }

上段代码中db.ExecuteStoreQuery<T>()方法是EF中已经定义的方法,可见就是为这种情况预留的。

具体调用方法如下:

  public List<ClassInfo> GetClassInfoList()
        {
            const string sql = @"你的SQL";
            //这边可以根据你SQL的需要,判断是否进行参数化查询
            return this.ExecuteStoreQuery(sql);
        }    

使用这种方法,你可以不必再使用EF模板自动帮你生成的Model,可以自定义Model,但查询的Sql结果中的字段必须在给定的类型中存在。

如果读者有什么更好的解决方案,欢迎沟通交流,共同进步~

END

注:如有转载或引用请注明出处 http://www.cnblogs.com/sev7en/p/4021994.html 

原文地址:https://www.cnblogs.com/sev7en/p/4022067.html