EntityFramewrok 使用
1.使用一些查询比较复杂或者需要拼接的查询的时候最好一直保持IQueryable。一直到最后取数据的时候才进行查询。例如分页之类的条件拼接。
var query = dbset.Where(expression);
query = IsDESC ? query.OrderByDescending(orderByExpression) : query.OrderBy(orderByExpression);
PageData<T> pageData = new PageData<T>();
pageData.TotalCount = query.Count();
pageData.DataList = query.Skip((PageIndex - ) * PageSize).Take(PageSize).ToList();
2.使用AsNoTracking可以让查询效率更高一些查询出来的东西不会放在缓存里进行追踪处理。
db.TestInfo.Where(e=> e.AName == "张三").AsNoTracking().ToList()
3.在查询后对外键关联处理比较多的情况下用Include进行预加载,效率会更高。
var list = db.TestInfo.Where(e => e.AName.Contains("张")).Include("TestGroup").ToList();
foreach (var item in list)
{
string groupName = item.TestGroup.GroupName;
}
4.批量修改网上有个扩展库挺好用的。EntityFramework.Extended,它提供了批量删除,批量修改等功能。
批量更新:
var query = db.TestInfo.Where(e => e.AName == "");
query.Update(e => new TestInfo { AName = "" });
将TestInfo里所有AName等于2014的AName改成1215
批量删除:
db.TestInfo.Where(e=> e.AName=="").Delete();
5.批量添加网上也有个扩展库。EntityFramework.BulkInsert插入速度很快10000条数据,1秒就ok了,虽然ef提供了AddRange,但是需要40多秒钟等待。
TestInfo testInfo;
for (int i = ; i < ; i++)
{
testInfo = new TestInfo();
testInfo.ID = Guid.NewGuid();
testInfo.AName = ""; testInfo.GID = new Guid("D9B3DC41-C584-4BA7-8443-A2F71309740A");
list.Add(testInfo);
}
db.BulkInsert(list);
//db.TestInfo.AddRange(list);
//db.SaveChanges();
EntityFramewrok 使用的更多相关文章
- EntityFramework 7 更名为EntityFramework Core(预发布状态)
前言 最近很少去学习和探索新的东西,尤其是之前一直比较关注的EF领域,本身不太懒,但是苦于环境比较影响自身的心情,所以迟迟没有下笔,但是不去学习感觉在精神层面缺少点什么,同时也有园友说EF又更新了,要 ...
- MVC - 17.OA项目
1.分层 2.项目依赖关系 MODEL IDAL -> MODEL DAL -> IDAL,MODEL,EntityFramewrok(注意和MODEL里的版本要一致),S ...
- JavaScript笔记杂谈篇(啥都有)
二维码缩放比例以43PX的倍数缩放最为标准. NuGet相关管理http://www.cnblogs.com/dudu/archive/2011/07/15/nuget.html 学习笔记: http ...
- EntityFramework版本下载和更新
安装指定版本的Package(例如:EntityFramework 5.0): PM> Install-Package EntityFramework -ProjectName MusicSto ...
- 分布式事务,EventBus 解决方案:CAP【中文文档】
前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下这篇文章. 本文档为 CAP 文献(Wiki),本文献同 ...
- ASP.NET MVC 5 SmartCode Scaffolding for Visual Studio.Net
介绍 ASP.NET MVC 5 SmartCode Scaffolding是集成在Visual Studio.Net开发工具中一个ASP.NET MVC Web应用程序代码生成框架,使用SmartC ...
- 分布式事务,EventBus 解决方案:CAP【中文文档】(转)
出处:http://www.cnblogs.com/savorboard/p/cap-document.html 前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这 ...
- 【转】分布式事务,EventBus 解决方案:CAP【中文文档】
[转]分布式事务,EventBus 解决方案:CAP[中文文档] 最新文档地址:https://github.com/dotnetcore/CAP/wiki 前言 很多同学想对CAP的机制以及用法等想 ...
随机推荐
- CF235C 【Cyclical Quest】
厚颜无耻的发一篇可能是全网最劣解法 我们发现要求给定的串所有不同的循环同构出现的次数,可以直接暴力啊 因为一个长度为\(n\)的串,不同的循环同构次数显然是不会超过\(n\)的,所以我们可以直接对每一 ...
- POJ 1681 Painter's Problem 【高斯消元 二进制枚举】
任意门:http://poj.org/problem?id=1681 Painter's Problem Time Limit: 1000MS Memory Limit: 10000K Total ...
- CF821E 【Okabe and El Psy Kongroo】
首先我们从最简单的dp开始 \(dp[i][j]=dp[i-1][j]+dp[i-1][j+1]+dp[i-1][j-1]\) 然后这是一个O(NM)的做法,肯定行不通,然后我们考虑使用矩阵加速 \( ...
- js中实现页面跳转(返回前一页、后一页)
一:JS 重载页面,本地刷新,返回上一页 代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a ...
- SQL里的concat() 以及group_concat() 函数的使用
实例参考:https://blog.csdn.net/mary19920410/article/details/76545053 一 concat()函数 1.功能:将多个字符串连接成一个字符串. 2 ...
- Mac iOS 允许从任何来源下载应用并打开
一个快捷的小知识点,mark! 允许从任何来源下载应用并打开,不用手动去允许,更加简洁! 只需一行命令 sudo spctl --master-disable 1.正常情况下,打开偏好设置,选择安全性 ...
- 【2017 World Final E】Need For Speed(二分)
Sheila is a student and she drives a typical student car: it is old, slow, rusty, and falling apart. ...
- 前行记录 - NOIP2018游记
NOIP2018游记 - 前行记录 NOIP2018 完跪……滚回学校考半期 QwQ 这篇不是题解 awa ,题解之后会发布的,毕竟我还没有AC呢 又及……G2020 陌路笙歌 - 再见(╯▽╰) 感 ...
- 详解Linux运维工程师
运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...
- JDBC与Statement和PreparedStatement的区别
一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...