EF Core使用遇到的问题
开个贴,专门记录使用EF Core遇到的问题,以后自己用.net写东西,操作数据库就使用EF Core了
EF Core速度问题
问题描述
我需要导入600多个csv文件,批量导入不会弄,网上也没查
使用了读取再存储的方法
EF使用方法1,每一行存储一次(400条/s)
可以看下面的代码每一行存一次,这种方法的速度差不多是每秒400多条数据的样子
foreach (var csvName in 600个文件)
{
foreach (var 每一行 in 所有行)
{
using (var context = new MyContext())
{
context.dGKs.Add(dGK);
context.SaveChanges();
}
}
}
EF使用方法2,链接不释放 (40条/s)
我感觉是using (var context = new MyContext())这个的问题,因为using括号内就是一次对数据库的链接和释放,所以我把代码改成下面这样了,结果大跌眼镜
using (var context = new MyContext())
{
foreach (var csvName in 600个文件)
{
foreach (var 每一行 in 所有行)
{
context.dGKs.Add(dGK);
context.SaveChanges();
}
}
}
上面这样,我以为只有一次的链接释放会快一点,没想到更慢了,方法1每秒400多条数据,方法2这样每秒只有几十条,真的慢
EF使用方法3,多次add,一次SaveChanges(400条/s,但是数据库操作异常慢)
经过方法2,我又想了,多次add,然后一次SaveChanges,这样会不会快一点?代码又改成了下面这样
using (var context = new MyContext())
{
foreach (var csvName in 600个文件)
{
foreach (var 每一行 in 所有行)
{
context.dGKs.Add(dGK);
}
context.SaveChanges();
}
}
这样的结果也很不好,首先半天没反应,有反应了数据库突然出现几万条数据,这和方法1每秒400条/s的速度也差不多啊
缺点还有:
- 我手动操作数据库的时候,单单一个查询语句半天才有反应,不能使用这个方法3
- 如果文件很大,我所有的行都add到一起,如果是70万条数据呢,据说EF Core最大1000条数据,再大就很慢了
所以,根据以上两个缺点,方法3也很差劲
所以,我最后还是改为了方法1
using内部千万不要使用try catch
问题描述,有一个字段是字符类型的,例如: "12.123","None"
我想判断这个字段是不是数字,不是数字的话直接改为"0",因为数据库里面的字段直接设定的Decimal类型
然后,我脑残的使用了try catch,还是在using内部使用的,如下
using (var context = new MyContext())
{
try{
dgk.aaa = int.Prase(dgk.aaa).toString();
}
catch{
dgk.aaa = "0";
}
context.dGKs.Add(dGK);
context.SaveChanges();
}
速度真的是超级慢了,每秒才30多条数据,慢死,catch真的耗时间
所以我换成了正则,话说,我一直不会正则
using (var context = new MyContext())
{
if (!Regex.IsMatch(dGK.aaa, @"^\d+\.\d+$"))
{
dGK.aaa = "0";
}
context.dGKs.Add(dGK);
context.SaveChanges();
}
换了正则之后和方法1差不多了,每秒400多条
EF Core使用遇到的问题的更多相关文章
- EF Core 数据库迁移(Migration)
工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用 Pomelo.EntityFrameworkCore.MySql 源代码地址(https://github. ...
- Asp.net Core 通过 Ef Core 访问、管理Mysql
本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1.0.0-preview2-003131 本文分为Window环 ...
- EF Core 杂记
本系列文章,将介绍本人在学习和使用EF Core的过程中的收获与心得. 或许有的地方讲的错误 欢迎大家批评指出. 1.EF Core 数据库迁移(Migration)
- MySQL官方.NET Core驱动已出,支持EF Core
千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功能已经可用. NuGet 地址:https:/ ...
- EF Core 1.0 和 SQLServer 2008 分页的问题
EF Core 1.0 在sqlserver2008分页的时候需要指定用数字分页. EF Core1.0 生成的分页语句中使用了 Featch Next.这个语句只有在SqlServer2012的时候 ...
- EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大 ...
- EF Core CodeFirst实践 ( 使用MS SqlServer)
这里使用 MS SQLSERVER ,网上大多使用 SQLite 先来一个CodeFirst 新建项目 这里我们选择 ASP.NET Core Web Application (.NET Core) ...
- ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...
- ASP.NET Core 开发 - Entity Framework (EF) Core
EF Core 1.0 Database First http://www.cnblogs.com/linezero/p/EFCoreDBFirst.html ASP.NET Core 开发 - En ...
- 再谈EF Core内存数据库单元测试问题
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:在用EF Core的内存数据库进行单元测试的时候遇到"无法访问已释放的对象& ...
随机推荐
- wordpress防止垃圾邮件的另一种方法
我们知道wordpress可以用Akismet插件防止垃圾邮件,前面ytkah还讲过contact form 7如何搭配Akismet过滤垃圾邮件,还有什么方法呢?我们留在网站上的邮箱有可能被爬虫批量 ...
- keil中error: #70: incomplete type is not allowed—解决方法
今天在写程序的时候,想使用sizeof求数组的大小,数组中其他c文件定义,在头文件使用extern uint8_t buff_value[]; 声明 但是keil编译报错,网上查了,发现,需要写成ex ...
- NSFileHandle类和NSFileManager,追加数据的操作
NSFileHandle类主要对文件内容进行读取和写入操作 NSFileManager类主要对文件的操作(删除.修改.移动.复制等等) 常用处理方法 + (id)fileHandleForReadin ...
- LeetCode 531. Lonely Pixel I
原题链接在这里:https://leetcode.com/problems/lonely-pixel-i/ 题目: Given a picture consisting of black and wh ...
- Json断言
Additionally assert value:添加验证的值,只有勾选了此复选框,才可以在Expected Value中设置期望的值. Match as regular expression:匹配 ...
- Numpy | 02 Ndarray 对象
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放同类型元素的多维数组. ndarr ...
- [Java] Spring boot 的maven设置阿里云仓库
Spring boot 的maven设置阿里云仓库 打开根目录下的 pom.xml 文件,在对应为止出加入如下 红色 代码: <build> <plugins> <plu ...
- 【转】为什么我们做分布式使用Redis?
绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知.这里对 Redis 常见问题做一个总结,解决 ...
- Nuxt + Vue 全家桶
引子 情由无中有,一旦有了,便万劫不复 简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建 ...
- K8s无状态控制器原理介绍
Pod控制器: ReplicationController:早期K8s只有这一个控制器,但后来发现让这一个来完成所有任务,太复杂.因此被废弃. ReplicaSet: 它用于帮助用户创建指定数量的Po ...