EF 批量添加数据
原文:https://www.cnblogs.com/liuruitao/p/10049191.html
原文:https://www.cnblogs.com/yaopengfei/p/7751545.html
环境:
就只安装了两个包,除此之外无其它任何配置,
EntityFramework、Z.EntityFramework.Extensions

一个简单的测试:
using System;
using System.Collections.Generic;
using System.Data.Entity; namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
using (var db = new BlogEntities())
{
//添加一条数据
//Blog entity = new Blog();
//entity.BlogId = 1;
//entity.Title = "title1";
//entity.CreateDate = DateTime.Now;
//db.Blogs.Add(entity);
//db.SaveChanges(); //查看 添加的数据 和 数据库链接地址
//int i = db.Blogs.ToList().Count;
//var d = db.Blogs.FirstOrDefault();
//var str = db.Database.Connection.ConnectionString; int total = ; //测试1
DateTime dt1 = DateTime.Now;
for (int i = ; i < total; i++)
{
Blog entity = new Blog();
entity.BlogId = ;
entity.Title = "title" + i.ToString();
entity.CreateDate = DateTime.Now;
db.Blogs.Add(entity);
db.SaveChanges();
}
Console.WriteLine("不批量插入1:" + (DateTime.Now - dt1).TotalMilliseconds); //测试2 和测试1的区别 在于 db.SaveChanges(); 的位置
DateTime dt2 = DateTime.Now;
for (int i = ; i < total; i++)
{
Blog entity = new Blog();
entity.BlogId = ;
entity.Title = "title" + i.ToString();
entity.CreateDate = DateTime.Now;
db.Blogs.Add(entity);
}
db.SaveChanges();
Console.WriteLine("不批量插入2:" + (DateTime.Now - dt2).TotalMilliseconds); //测试3 需要引入Z.EntityFramework.Extensions 批量插入
DateTime dt3 = DateTime.Now;
List<Blog> list = new List<Blog>();
for (int i = ; i < total; i++)
{
Blog entity = new Blog();
entity.BlogId = ;
entity.Title = "title" + i.ToString();
entity.CreateDate = DateTime.Now;
list.Add(entity);
}
db.BulkInsert(list);
db.SaveChanges();
Console.WriteLine("批量插入:" + (DateTime.Now - dt3).TotalMilliseconds); Console.ReadKey();
}
}
} public class Blog
{
public int BlogId { get; set; }
public string Title { get; set; }
public DateTime CreateDate { get; set; }
} public class BlogEntities : DbContext
{
public DbSet<Blog> Blogs { get; set; }
} }
EF 批量添加数据的更多相关文章
- EF批量添加数据性能慢的问题的解决方案
//EF批量添加数据性能慢的问题的解决方案 public ActionResult BatchAdd() { using (var db = new ToneRoad.CEA.DbContext.Db ...
- EF批量添加数据之修改SQL Server执行上限
asp.net core 项目 打开Startup.cs services.AddDbContext<MyContext>( options => { options.UseSqlS ...
- .Net中批量添加数据的几种实现方法比较
在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...
- ThinkPHP批量添加数据和getField()示例
批量添加数据 // 批量添加数据 $User = M('users'); $dataList[] = array('name'=>'thinkphp','email'=>'thinkphp ...
- thinkphp3.2 批量添加数据
这是我遇到的thinkphp3.2 当中最让我无语的坑 批量添加数据有个方法是 addAll() 这个方法一定要注意数组的键名,一定要整齐!!! 可以在存入数据前,用ksort()方法将数组的键名排序 ...
- spring boot之使用通用Mapper批量添加数据
通用Mapper是一款针对mybatis进行扩展的轻量级组件,使用起来非常方便.当调用其针对mysql进行批量添加数据的方法时,发现报错,仔细研究了一番,发现是在使用通用Mapper上出现了问题.下面 ...
- Yii2如何批量添加数据
批量添加这个操作,在实际开发中经常用得到,今天小编抽空给大家整理些有关yii2批量添加的问题,感兴趣的朋友一起看看吧. 在上篇文章给大家介绍了关于浅析Yii2 gridview实现批量删除教程,当然, ...
- ADO.NET- 中批量添加数据的几种实现方法比较
在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...
- 使用EF批量新增数据十分缓慢
使用EF来批量新增数据,发现效率非常的差,几千条数据时甚至需要几分钟来执行,迫于无奈使用sql来执行了. 今天偶然看到一篇关于EF的文章,才发觉原来是自己对EF不够了解的原因. 一般新增时我们是将所有 ...
随机推荐
- PAT B1012.数字分类
全部AC #include <cstdio> int valid[5] = {0}; int count[5] = {0}; int p1(int i) { printf("%d ...
- centos7搭建NFS服务
服务器端 139.155.90.78 客户端 192.168.198.146 先查看自己的系统有没有安装rpcbind 和nfs-utils rpm -qa nfs-utils rpcbind 若使 ...
- 方格取数--状压DP or 网络流
题意:http://acm.hdu.edu.cn/showproblem.php?pid=1565 取不相邻的点是权值最大. 这题可以网络流做,暂时先DP一下,网络流明天学一下~~ #define I ...
- jQuery+php+ajax实现无刷新上传文件功能
jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码 <script type='text/javascript' src='j ...
- 流程控制之 while 循环
目录 流程控制之while while 条件循环语句 while contine while else while 循环的嵌套 流程控制之while while 条件循环语句 循环就是一个重复的过程 ...
- oracle按用户导出导入表
查看备份目录:select * from dba_directories where directory_name='DATA_PUMP_DIR'; 导入导出的文件名默认都是以备份目录为相对路径. 按 ...
- Code First项目Migrations
关于Enable-Migrations指令说明我们知道,Enable-Migrations的作用是在Code First项目中使用数据迁移,通过get-help Enable-Migrations查看 ...
- JavaSE基础知识之继承
一.概述 继承描述的是事物之间的所属关系,这种关系是: is-a 的关系.例如,图中的兔子属于食草动物,食草动物又属于动物.继承可以使多种事物之间形成一种关系体系,让父类更通用,子类更具体. 1.1 ...
- 如何解决windows 80端口被占用的情况
window下如果在安装某个软件或者启动tomcat时 会遇到80端口被占用的情况,通过命令 netstat -ano 查看端口被占用情况 找到占用80端口的进程ID,然后我们在任务管理器当中将这个进 ...
- 实现双向绑定Proxy比defineproperty优劣如何?
前言 双向绑定其实已经是一个老掉牙的问题了,只要涉及到MVVM框架就不得不谈的知识点,但它毕竟是Vue的三要素之一. Vue三要素 响应式: 例如如何监听数据变化,其中的实现方法就是我们提到的双向绑定 ...