为什么80%的码农都做不了架构师?>>>
奋斗的小鸟——dogxuefeng
Entity Framework 批量插入很慢
Entity Framework 批量插入很慢吗?我自己测试下
前几天看到一篇文章里提到过,在批量插入时,需要加上Context.Configuration.AutoDetectChangesEnabled = false;
文章原话:EF默认会自动的跟踪数据的变化,当变更的数据量较大的时候,EF的跟踪工作量就会骤增,但指定操作变得非常缓慢(这也是部分同学怀疑EF的性能问题的一个怀疑点),其实,只要在批量操作的时候把自动更新关闭,即可解决缓慢的问题。
大家自己去看看:http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html 由于没测试,所以不知道结果是不是变快,快多少
结果早上发现首页一个测试Entity Framework的文章,http://www.cnblogs.com/newton/archive/2013/06/06/3120497.html 说EF性能不行,正好没加这句,我也好奇,所以自己测试下,写这个文章不是针对作者,只是自己好奇,互相讨论
测试结果
Context.Configuration.AutoDetectChangesEnabled = false 时,果然是拖拉机变灰机啊。。。
不知道这样测试对不对,反正确实快了不少
后台代码
public ActionResult Index(int args, string check)
{
int count = args;
EF_Test test = new EF_Test();
Random ra = new Random();
System.Text.StringBuilder result = new System.Text.StringBuilder();
var now1 = DateTime.Now.TimeOfDay;
result.Append(string.Format("{0}开始将数据Add到上下文中,数据量:{1}
", now1, count));
if (check != null)
{
db.Configuration.AutoDetectChangesEnabled = false;
db.Configuration.ValidateOnSaveEnabled = false;
}
for (int i = 0; i < count; i++)
{
test = new EF_Test();
test.Name = "linfei";
test.Date = DateTime.Now;
test.RandomNum = ra.Next(1, 10) * 100;
db.EF_Test.Add(test);
}
var now2 = DateTime.Now.TimeOfDay;
result.Append(string.Format("{0}数据Added完毕,开始执行Insert操作,耗时{1}
", now2, now2 - now1));
result.Append(string.Format("AutoDetectChangesEnabled 状态:{0}
", db.Configuration.AutoDetectChangesEnabled));
try
{
db.SaveChanges();
}
finally
{
db.Configuration.AutoDetectChangesEnabled = true;
db.Configuration.ValidateOnSaveEnabled = true;
}
var now3 = DateTime.Now.TimeOfDay;
result.Append(string.Format("{0}Insert完毕,耗时{1}
", now3, now3 - now2));
ViewBag.result = result.ToString();
return View();
}
分类: C#
绿色通道: 好文要顶 关注我 收藏该文与我联系
dogxuefeng
关注 - 3
粉丝 - 9
+加关注
0
0
(请您对文章做出评价)
« 上一篇:oracle获取本月第一天和最后一天及Oracle trunc()函数的用法
» 下一篇:C#关于日期月天数和一年有多少周及某年某周时间段的计算
posted on 2013-06-07 12:25 dogxuefeng 阅读(422) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
发表评论
昵称:
评论内容:
注销 订阅评论
[使用Ctrl+Enter键快速提交]
博客园首页博问新闻闪存程序员招聘知识库
最新IT新闻:
· 亚马逊FirePhone5天初体验 有亮点但缺陷太多
· 中兴上半年售出2800万台智能机 4G手机过半
· OculusVR开始交付350美元虚拟现实头盔
· 联想用“新板凳”登陆物联网战场
· 微软砍掉 McLaren 之后,需要一个 Lumia 925 继任者
» 更多新闻...
最新知识库文章:
· 我眼里的DBA
· 面向对象设计的设计原则
· 前端工程与性能优化
· 百度员工离职总结:如何做个好员工?
· 程序员的工作不能用“生产效率”这个词来衡量
» 更多知识库文章...
Powered by:
博客园
Copyright © dogxuefeng
<
2013年6月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
导航
- 博客园
- 首页
- 新随笔
- 联系
- 订阅
- 管理
统计
- 随笔 - 41
- 文章 - 0
- 评论 - 12
- 引用 - 0
公告
昵称:dogxuefeng
园龄:3年4个月
粉丝:9
关注:3
+加关注
搜索
常用链接
- 我的随笔
- 我的评论
- 我的参与
- 最新评论
- 我的标签
随笔分类(40)
- ASP.NET(3)
- C#(20)
- DEV第三方控件(6)
- oracle(11)
随笔档案(41)
- 2013年12月 (1)
- 2013年6月 (7)
- 2013年3月 (3)
- 2013年1月 (4)
- 2012年12月 (1)
- 2012年11月 (7)
- 2012年10月 (2)
- 2012年9月 (4)
- 2012年8月 (5)
- 2012年7月 (1)
- 2012年6月 (2)
- 2012年4月 (4)
最新评论
- 1. Re:DEV ComBoxEdit实现模糊检索数据
- 哪里下载?
- --gaofq
- 2. Re:DEV ComBoxEdit实现模糊检索数据
- @dogxuefeng
呵呵,我有些地方弄错了,改过来就没问题了。 - --小小程序媛
- 3. Re:DEV ComBoxEdit实现模糊检索数据
- @dogxuefeng嗯,我是在comboBoxEdit的TextChange()事件里触发模糊查询这段代码的,所以好像不能避免我说的那个情况。我现在把代码写在keyup()事件里了,情况有改进,但还是有点问题。如果我的输入法是搜狗的,它还是像以前那样,如果我把输入法切换成美式键盘的输入法就没问题了......
- --小小程序媛
- 4. Re:DEV ComBoxEdit实现模糊检索数据
- @小小程序媛这个控件确实有自带的模糊查找功能,但是你说的那个问题我觉得不会,他只是显示出来,但是下拉后任会把其他符合条件的数据显示在下拉中,其实你只要加一行代码,输入的值改变时,展示所有满足条件的item就行了...
- --dogxuefeng
- 5. Re:DEV ComBoxEdit实现模糊检索数据
- comboBoxEdit模糊查询,即使你不写这个方法,它也会有一个自带模糊查询的效果。比如你comboBoxEdit控件里有以下几个值,分别是:b001,b002,A001,b20k;在你没写自定义模糊查询方法时,你输入一个b,它会自动带出b001显示在控件上,只能是输入首位字符的时候才有这个效果。......
- --小小程序媛
阅读排行榜
- 1. Oracle——distinct的用法(13082)
- 2. DEV ComBoxEdit实现模糊检索数据(2178)
- 3. C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)(1341)
- 4. RDLC子报表用法(1282)
- 5. C# Excel数据转化为Datatable(1195)
评论排行榜
- 1. DEV ComBoxEdit实现模糊检索数据(9)
- 2. Oracle——distinct的用法(2)
- 3. RDLC子报表用法(1)
推荐排行榜
- 1. DEV ComBoxEdit实现模糊检索数据(2)
- 2. C# Excel数据转化为Datatable(1)
- 3. C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)(1)
- 4. C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)(1)
- 5. Oracle——distinct的用法(1)