前不久项目开发过程中,使用的是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