Entity Framework自然是会比ADO.NET性能慢点,这个不多说了。直接上结果。

本该用测试项目的,不过我建了个aspx。下面是随便测20遍得到的结果

补充!!把12行改成 list = db.Role.AsNoTracking().ToList();
由于这只做查询,不需要上下文进行跟踪。效率瞬间提升平均3-5倍,超越SqlDataAdapter,(其实很多人用SqlDataAdapter而不是用SqlCommand)

测试代码(建aspx,nuget拿EF6.1dll,建数据库建表Role,自己插入6万条数据,有主键自增)

         string connStr = "server=localhost;database=EF;uid=sa;pwd=your1234;Persist Security Info=True";

         List<Role> list = new List<Role>();
DateTime start = DateTime.MinValue;
DateTime end = DateTime.MinValue; Response.Write("查询6万条数据耗时测试 <br />");
using (var db = new DBContext(connStr))
{
start = DateTime.Now;
list = db.Role.ToList();
end = DateTime.Now;
Response.Write("EF6.1,耗时:" + (end - start).ToString() + " <br />");
} start = DateTime.Now;
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand("select * from [Role]", conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
list.Add(new Role()
{
ID = dr.GetInt32(),
Name = dr.GetString(),
Desc = dr.GetString(),
CreateDate = dr.GetDateTime(),
ModifyDate = dr.GetDateTime()
});
}
dr.Close(); end = DateTime.Now;
Response.Write("ADO.NET SqlCommand + SqlDataReader,耗时:" + (end - start).ToString() + " <br />"); start = DateTime.Now;
SqlDataAdapter sda = new SqlDataAdapter("select * from [Role]", conn);
var ds = new DataSet();
sda.Fill(ds);
list = (from item in ds.Tables[].AsEnumerable()
select new Role
{
ID = item.Field<int>("ID"),
Name = item.Field<string>("Name"),
Desc = item.Field<string>("Desc"),
CreateDate = item.Field<DateTime>("CreateDate"),
ModifyDate = item.Field<DateTime>("ModifyDate"), }).ToList(); conn.Close(); end = DateTime.Now;
Response.Write("ADO.NET SqlDataAdapter + DataSet,耗时:" + (end - start).ToString() + " <br />");

EF其实是不错的东西,楼主很喜欢;很多人说EF性能差,不过我觉得EF很利于开发进度。

一个Entity Framework、ADO.NET查询性能测试的更多相关文章

  1. 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明

    一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...

  2. Entity Framework入门教程: Entity Framework支持的查询方式

    Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...

  3. Entity Framework常用的查询方式

    Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...

  4. Entity Framework做IN查询

    开发中遇到的Too high level of nesting for select错误 项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的 ...

  5. Entity Framework Core Like 查询揭秘

    在Entity Framework Core 2.0中增加一个很酷的功能:EF.Functions.Like(),最终解析为SQL中的Like语句,以便于在 LINQ 查询中直接调用. 不过Entit ...

  6. Entity Framework中实现查询的几种方法

    在介绍几种方法前,献上一张图,希望图的作者不要追究我的盗图之过.本文的内容是我自学时的笔记,自学的内容来自网络.手打的代码,切不可直接复制过去用,会有好多错别字什么的. Entity SQL 类似于S ...

  7. 如何使用 Entity Framework 构造动态查询表达式

    一般的程序员做上几年以后, 或多或少的都有些代码的积累, 我也不例外. 作为微软技术程序员, 自从Linq和EF出来之后, 就基本上爱不释手了, 且不说执行效率的问题, 单单就开发效率和代码的可移植性 ...

  8. 发现了一个entity framework的BUG

    小弟学浅才疏可能是小题大做,但遇上了并且让我麻烦了一阵,就值得记下来 BUG的过程就是我在建立实体模型的时候 命名了一个叫system的实体模型 导致了所有生成类中 引用using system失败

  9. Entity Framework 多对多查询的写法

    同学们,看下面的代码段就明白了: 一对多: public ICollection<ReportLookup> GetReportLookup(IEnumerable<Guid> ...

随机推荐

  1. Java-System.getProperty()

    Java平台使用了一个Poperties对象来维护其自己的配置信息.System泪中包含有一个Properties对象用于描述当前工作环境的配置.系统properties包含了关于当前用户.当前Jav ...

  2. 浏览器的F5和Ctrl+F5

    在浏览器里中,按F5键和按F5同时按住Ctrl键(简称Ctrl+F5),效果是不同,到底两者有什么区别呢? 假如我第一次访问过http://localhost/home,这个网页是个动态网页,每次访问 ...

  3. python代码格式检查工具部署pre_commit

    如何使用pre_commit?1. 合并该分支 2. 在git根目录下使用pre-commit install即可3. 如果没有装pre-commit 安装一下pip install pre-comm ...

  4. ajax readystatue

    onReadyStatueChange存儲狀態處理函數,當readyStatue改變時,調用該函數. readyStatue的狀態: 0   請求未初始化 1   服務器連接已建立 2  請求已接收 ...

  5. std::binary_serach, std::upper_bound以及std::lower_bound

    c++二分查找的用法 主要是 std::binary_serach,  std::upper_bound以及std::lower_bound 的用法,示例如下: std::vector<int& ...

  6. BZOJ4034[HAOI2015]树上操作——树链剖分+线段树

    题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都 ...

  7. BZOJ1468Tree——点分治

    题目描述 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 输入 N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是k 输出 一行,有多 ...

  8. java 前台使用枚举方法(二)

    最近发现,前台jsp使用枚举,有一个更方便的方法. 首先 枚举类的封装大家看一下:http://blog.csdn.net/hanjun0612/article/details/72845960 然后 ...

  9. git报错failed to push some refs to 'git@github.com:Markprint/github.git'

     这个不知名小错误用了我两天的空余时间mmp   就是这里报的错 输入 git push origin master -f 解释为: 远程分支上存在本地分支中不存在的提交,往往是多人协作开发过程中遇到 ...

  10. 自学Zabbix3.12.4-动作Action-Operation配置

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 3.12.4 自学Zabbix3.12.4-动作Action-Operation配置 1. 概述 ...