博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework 批量插入很慢
阅读量:7075 次
发布时间:2019-06-28

本文共 2052 字,大约阅读时间需要 6 分钟。

 

前几天看到一篇文章里提到过,在批量插入时,需要加上Context.Configuration.AutoDetectChangesEnabled = false;

文章原话:EF默认会自动的跟踪数据的变化,当变更的数据量较大的时候,EF的跟踪工作量就会骤增,但指定操作变得非常缓慢(这也是部分同学怀疑EF的性能问题的一个怀疑点),其实,只要在批量操作的时候把自动更新关闭,即可解决缓慢的问题。

大家自己去看看:  由于没测试,所以不知道结果是不是变快,快多少

结果早上发现首页一个测试Entity Framework的文章, 说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(); }

转载于:https://www.cnblogs.com/dogxuefeng/archive/2013/06/07/3123619.html

你可能感兴趣的文章
在matlab中进行地理坐标和像素坐标的相互转换
查看>>
HttpContext.Current.Cache 和 HttpRuntime.Cache 区别
查看>>
Android分析应用程序的构建过程
查看>>
发布了Android的App,我要开源几个组件!
查看>>
EXCELL中怎么将两列数据对比,找出相同的和不同的数据?
查看>>
(算法)宝石升级问题
查看>>
Android 中的接口回调
查看>>
LPC-Link2 CMSIS-DAP firmware source
查看>>
hdu 5438 Ponds 拓扑排序
查看>>
NSArray 利用数组创建数组
查看>>
PHP 对象和引用总结
查看>>
linux网络编程投票
查看>>
spring EL表达式,null-safe表达式
查看>>
系列文章--Python Web编程
查看>>
Swift - 搜索条(UISearchBar)的用法
查看>>
iOS开发之ImageView复用实现图片无限轮播
查看>>
文件系统中的目录查找
查看>>
[转]优化数据库大幅度提高Oracle的性能
查看>>
openwrt-智能路由器hack技术(1)---"DNS劫持"
查看>>
第十二章 数据备份与还原
查看>>