EntityFramework 优化
1、分页的时候,尽量在数据库里面去分页.
//在数据库中分页
var product = context.Set<Product>().OrderBy(c=>c.Id).Skip().Take().ToList();
//先把数据从数据库中查出来,然后才分页
var products = context.Set<Product>().ToList().Skip().Take();
2、尽量禁用延迟加载,尽量使用预加载和显式加载查询
默认生成的代码,是启用了延迟加载的,这样会造成多次往返数据库查询的。
如果在查询的结果中使用导航属性的时候使用预加载
3、AsNoTracking作用
无跟踪查询,也就是说查询出来的对象不能直接做修改。所以,我们在做数据集合查询显示,而又不需要对集合修改并更新到数据库的时候,一定不要忘记加上AsNoTracking。
如果查询过程做了select映射就不需要加AsNoTracking。如:db.Students.Where(t=>t.Name.Contains("张三")).select(t=>new (t.Name,t.Age)).ToList();
//不考虑删除和修改
var product2 = context.Set<Product>().AsNoTracking().ToList();
//select映射
var product3 = context.Set<Product>().Select(c => new { c.Id, c.Name, c.Description }).ToList();
4、Any的用法
确定集合中是否有元素满足某一条件
//any的用法
var result = context.Set<Product>().Any(c => c.Name.Contains("书")); var result2 = context.Set<Product>().Where(c => c.Name.Contains("书")).Count() > ;
不管是直接属性还是导航属性我们都用any来判断是否存在是最稳当的
5、避免从ToList()后的结果中查找
写完查询后如果调用ToList()或者FirstOrDefault(),再从结果中查找元素,此时数据会全部加载到内存中。
EntityFramework 优化的更多相关文章
- EntityFramework 优化建议
Entity Framework目前最新版本是6.1.3,当然Entity Framework 7 目前还是预览版,并不能投入正式生产环境,估计正式版16年第一季度会出来,了解过EF7的部分新特性后, ...
- EntityFramework优化:第一次启动优化
1. 预先生成视图 通过代码的方式来预先生成视图,要求EntityFramework是6.0及以上版本. 控制台程序: using System.Data.Entity.Infrastructure; ...
- EntityFramework 优化建议(转)
转载地址:http://blog.jd-in.com/947.html Entity Framework目前最新版本是6.1.3,当然Entity Framework 7 目前还是预览版,并不能投入正 ...
- EntityFramework优化:查询性能
1. 禁用延迟加载 延迟加载是常见的方式,Entity Framework在需要时可以自动为一个实体的实例获取关联的数据. Entity Framework自动延迟加载需要同时满足以下3个条件: (1 ...
- EntityFramework优化:查询WITH(NOLOCK)
1.SQL Server查询中WITH(NOLOCK) SELECT语句中加上WITH(NOLOCK)为解决阻塞死锁. 处理数据库死锁异常查询的一种方式是使用NOLOCK 或 READPAST. ◊ ...
- EntityFramework优化:SQL语句日志
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...
- C#实用杂记-EF全性能优化技巧
原文链接:http://www.makmong.com/947.html#comment-31 EntityFramework 优化建议 2016年1月15日 下午4:54 LEILINKANG ...
- EntityFramework之异步、事务及性能优化(九)
前言 本文开始前我将循序渐进先了解下实现EF中的异步,并将重点主要是放在EF中的事务以及性能优化上,希望通过此文能够帮助到你. 异步 既然是异步我们就得知道我们知道在什么情况下需要使用异步编程,当等待 ...
- EntityFramework Core不得不注意的性能优化意外收获,你会用错?
前言 这两天在着实研究EF Core项目当中对于一些查询也没实际去检测,于是想着利用放假时间去实际测试下,结果本文就出来了,too young,too simple,后续博主会从底层翻译表达式树弄起, ...
随机推荐
- pthreads 2.0.10 test
CentOS 6.3 cd /root mkdir pthreads //get php-5.6 and install zts version wget cn2.php.net/get/php-5. ...
- Coding源码学习第二部分(FunctionIntroManager.m)
接上篇.上篇有一个细节忘了写,在Coding_iOS-Info.plist 里面添加了一个key 是 Status bar is initially hidden Value 是 YES,在appl ...
- asp.net mvc 防止开放重定向
/// <summary> /// 防止开发重定向,篡改returnurl /// </summary> /// <param name="request&qu ...
- redis-JedisPoolConfig配置
项目之前要使用redis这个临时缓存,下面是从别的大神那里转来的一些基本配置属性的说明: JedisPoolConfig config = new JedisPoolConfig(); //连接耗 ...
- web学习之开发环境的搭建
开发工具 myeclipse2014: tomcat7.0 jdk7.0 1:新建一个web projcat 2:找到web root目录下的index.jsp 这是项目首页 3:访问web项目 ht ...
- json处理总结(前端js和后端java)
前端(js): json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键,下面将介绍两者之间的相互转换. json字符串:var st ...
- elasticsearch rpm 安装
参考:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html Dow ...
- ANDROID : java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String in android
Andriod系统包中现在已经自带加密函数,如果用apache的codec包则会报以上错误,用android.util.Base64以下方法代替org.apache.commons.codec.bin ...
- SharePoint Site "Language Settings"功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint网站中的语言设置:"Language Settings",可以用CSOM通过Site的一些 ...
- 《1---关于解决MySQL在控制台插入中文乱码问题》
说明:以下所有操作都是基于我个人的电脑及示例,读者可以参考我这个解决过程,去解决自己的问题,如有其它疑问,欢迎留言交流. 首先来看看我遇到的问题: [1]查看数据库: [2]使用test数据库: [3 ...