原文:https://www.cnblogs.com/liuruitao/p/10049191.html

原文:https://www.cnblogs.com/yaopengfei/p/7751545.html

环境:

  就只安装了两个包,除此之外无其它任何配置,
  EntityFramework、Z.EntityFramework.Extensions

 一个简单的测试:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4.  
  5. namespace ConsoleApp2
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. using (var db = new BlogEntities())
  12. {
  13. //添加一条数据
  14. //Blog entity = new Blog();
  15. //entity.BlogId = 1;
  16. //entity.Title = "title1";
  17. //entity.CreateDate = DateTime.Now;
  18. //db.Blogs.Add(entity);
  19. //db.SaveChanges();
  20.  
  21. //查看 添加的数据 和 数据库链接地址
  22. //int i = db.Blogs.ToList().Count;
  23. //var d = db.Blogs.FirstOrDefault();
  24. //var str = db.Database.Connection.ConnectionString;
  25.  
  26. int total = ;
  27.  
  28. //测试1
  29. DateTime dt1 = DateTime.Now;
  30. for (int i = ; i < total; i++)
  31. {
  32. Blog entity = new Blog();
  33. entity.BlogId = ;
  34. entity.Title = "title" + i.ToString();
  35. entity.CreateDate = DateTime.Now;
  36. db.Blogs.Add(entity);
  37. db.SaveChanges();
  38. }
  39. Console.WriteLine("不批量插入1:" + (DateTime.Now - dt1).TotalMilliseconds);
  40.  
  41. //测试2 和测试1的区别 在于 db.SaveChanges(); 的位置
  42. DateTime dt2 = DateTime.Now;
  43. for (int i = ; i < total; i++)
  44. {
  45. Blog entity = new Blog();
  46. entity.BlogId = ;
  47. entity.Title = "title" + i.ToString();
  48. entity.CreateDate = DateTime.Now;
  49. db.Blogs.Add(entity);
  50. }
  51. db.SaveChanges();
  52. Console.WriteLine("不批量插入2:" + (DateTime.Now - dt2).TotalMilliseconds);
  53.  
  54. //测试3 需要引入Z.EntityFramework.Extensions 批量插入
  55. DateTime dt3 = DateTime.Now;
  56. List<Blog> list = new List<Blog>();
  57. for (int i = ; i < total; i++)
  58. {
  59. Blog entity = new Blog();
  60. entity.BlogId = ;
  61. entity.Title = "title" + i.ToString();
  62. entity.CreateDate = DateTime.Now;
  63. list.Add(entity);
  64. }
  65. db.BulkInsert(list);
  66. db.SaveChanges();
  67. Console.WriteLine("批量插入:" + (DateTime.Now - dt3).TotalMilliseconds);
  68.  
  69. Console.ReadKey();
  70. }
  71. }
  72. }
  73.  
  74. public class Blog
  75. {
  76. public int BlogId { get; set; }
  77. public string Title { get; set; }
  78. public DateTime CreateDate { get; set; }
  79. }
  80.  
  81. public class BlogEntities : DbContext
  82. {
  83. public DbSet<Blog> Blogs { get; set; }
  84. }
  85.  
  86. }

EF 批量添加数据的更多相关文章

  1. EF批量添加数据性能慢的问题的解决方案

    //EF批量添加数据性能慢的问题的解决方案 public ActionResult BatchAdd() { using (var db = new ToneRoad.CEA.DbContext.Db ...

  2. EF批量添加数据之修改SQL Server执行上限

    asp.net core 项目 打开Startup.cs services.AddDbContext<MyContext>( options => { options.UseSqlS ...

  3. .Net中批量添加数据的几种实现方法比较

    在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...

  4. ThinkPHP批量添加数据和getField()示例

    批量添加数据 // 批量添加数据 $User = M('users'); $dataList[] = array('name'=>'thinkphp','email'=>'thinkphp ...

  5. thinkphp3.2 批量添加数据

    这是我遇到的thinkphp3.2 当中最让我无语的坑 批量添加数据有个方法是 addAll() 这个方法一定要注意数组的键名,一定要整齐!!! 可以在存入数据前,用ksort()方法将数组的键名排序 ...

  6. spring boot之使用通用Mapper批量添加数据

    通用Mapper是一款针对mybatis进行扩展的轻量级组件,使用起来非常方便.当调用其针对mysql进行批量添加数据的方法时,发现报错,仔细研究了一番,发现是在使用通用Mapper上出现了问题.下面 ...

  7. Yii2如何批量添加数据

    批量添加这个操作,在实际开发中经常用得到,今天小编抽空给大家整理些有关yii2批量添加的问题,感兴趣的朋友一起看看吧. 在上篇文章给大家介绍了关于浅析Yii2 gridview实现批量删除教程,当然, ...

  8. ADO.NET- 中批量添加数据的几种实现方法比较

    在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...

  9. 使用EF批量新增数据十分缓慢

    使用EF来批量新增数据,发现效率非常的差,几千条数据时甚至需要几分钟来执行,迫于无奈使用sql来执行了. 今天偶然看到一篇关于EF的文章,才发觉原来是自己对EF不够了解的原因. 一般新增时我们是将所有 ...

随机推荐

  1. 12306火车票余票查询&Python实现邮件发送

    查询余票接口 打开12306官网,并进入余票查询页面,同时开启chrome浏览器F12控制台,以北京到上海为例,搜索2018年10月1日的余票信息,点击搜索按钮,可以在控制台发送了一条GET请求,请求 ...

  2. drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04

    目录 复习 基于前一天序列化基础 整体单改 单与整体局部修改 复习 """ 1.ModelSerializer序列化类 models.py class BaseModel ...

  3. CNN网络结点计算总结(1998)

    图 来源:Gradient-Based Learning Applied to Document Recognition 参阅CSDN:https://blog.csdn.net/dcxhun3/ar ...

  4. Tomcat中的Host和Engine级别的servlet容器

    这边文章主要介绍的是Host容器 和 Engine容器.如果你想在同一个Tomcat上部署运行多个Context容器的话,你就需要使用Host容器,从理论上来讲,如果你的Tomcat只想要部署一个Co ...

  5. 缓存策略:redis缓存之springCache

    最近通过同学,突然知道服务器的缓存有很多猫腻,这里通过网上查询其他人的资料,进行记录: 缓存策略 比较简单的缓存策略: 1.失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放 ...

  6. MySQL mysql-5.7.21-winx64.zip安装指南

    一.下载mysql-5.7.21-winx64.zip压缩包 二.解压 1.在目录mysql-5.7.21-winx64下新建data文件夹 !!!如果已经存在data文件夹,请删除其中ib_logf ...

  7. docker 网络模式详解

    一.前言 Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分.因此,我们有必要 ...

  8. 使用HandyJSON导致的内存泄漏问题相关解决方法

    在移动开发中,与服务器打交道是不可避免的,从服务器拿到的接口数据最终都会被我们解析成模型,现在比较常见的数据传输格式是json格式,对json格式的解析可以使用原生的解析方式,也可以使用第三方的,我们 ...

  9. JavaWeb【Servlet】

    概念 Servlet是在服务器上运行的小程序.一个Servlet请求对应一个Java类(对应一个Wrapper容器),可以通过请求-响应模式访问这个驻留在内存中的小程序. Tomcat容器等级 上图表 ...

  10. Redis+Sentinel安装与配置

    在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分. 物理机IP:192.168.0.12 主节点master端口:6301 从节点slave1端 ...