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 - 1) * 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 == "2014");
query.Update(e => new TestInfo { AName = "1215" });

将TestInfo里所有AName等于2014的AName改成1215

批量删除:

db.TestInfo.Where(e=> e.AName=="2014").Delete();

5.批量添加网上也有个扩展库。EntityFramework.BulkInsert插入速度很快10000条数据,1秒就ok了,虽然ef提供了AddRange,但是需要40多秒钟等待。

       TestInfo testInfo;for (int i = 0; i < 10000; i++){testInfo = new TestInfo();testInfo.ID = Guid.NewGuid();testInfo.AName = "2014";testInfo.GID = new Guid("D9B3DC41-C584-4BA7-8443-A2F71309740A");list.Add(testInfo);}db.BulkInsert(list);//db.TestInfo.AddRange(list);//db.SaveChanges();

转载于:https://www.cnblogs.com/ariklee/p/3938094.html

EntityFramewrok 使用相关推荐

  1. MVC - 17.OA项目

    1.分层 2.项目依赖关系 MODEL IDAL -> MODEL DAL -> IDAL,MODEL,EntityFramewrok(注意和MODEL里的版本要一致),System.Da ...

  2. 分布式事务,EventBus 解决方案:CAP【中文文档】

    前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下 .NET Core 事件总线,分布式事务解决方案:CA ...

  3. 使用Nuget 安装指定版本package或者更新package到指定版本

    最近在琢磨MVC和EntityFramework,使用的VS是2013版的,在Nuget的GUI界面下安装了EntityFramework(默认安装最新版的,怎么安装指定版本还没找到),按照MVC的示 ...

  4. ASP.NET MVC 5 SmartCode Scaffolding for Visual Studio.Net

    介绍 ASP.NET MVC 5 SmartCode Scaffolding是集成在Visual Studio.Net开发工具中一个ASP.NET MVC Web应用程序代码生成框架,使用SmartC ...

  5. JavaScript笔记杂谈篇(啥都有)

    二维码缩放比例以43PX的倍数缩放最为标准. NuGet相关管理http://www.cnblogs.com/dudu/archive/2011/07/15/nuget.html 学习笔记: http ...

  6. 广州.Net+Android训练营 课程体系4.1版

    --- 总学时3个月 重要升级信息: a.加入.Net for Android 和 Unity3D游戏开发,.Net也可以开发 Android/IOS 的3D游戏啦! 1. Part1.0:.Net基 ...

最新文章

  1. rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
  2. Vista下的五笔输入法
  3. php人民币转换,PHP字符串转换RMB形式数字
  4. 04.elasticsearch_get操作
  5. Elasticsearch 实现自定义排序插件
  6. C#读写txt文件的两种方法介绍
  7. oracle 11g b表空间什么情况下自动增加,Oracle 11g表空间——创建和扩展(永久)表空间...
  8. 致力微商_致力于自己。 致力于公益组织。
  9. C#中判断字符串相等的方法
  10. PaddleOCR 手写识别模型:标注到训练
  11. 超市仓库管理系统(过期提醒)
  12. C盘hiberfil.sys文件可以删除吗?法2(推荐)
  13. Android UI 测试指南之 Espresso
  14. 25道Python工程师面试必备知识点!
  15. python中类定义要素_python对象的三要素是什么
  16. 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。
  17. Java多态性:Java什么是多态?
  18. 高等数学笔记-苏德矿-第九章-重积分(Ⅰ)-二重积分
  19. 利用云端GPU训练YOLOv5模型
  20. 文墨绘学21天习惯养成方法,学好就会优秀

热门文章

  1. JAVA线程池的创建
  2. 2013年1月7日学习内容
  3. 海洋工作室——网站建设专家:全数据库比较工具
  4. 【MyBatis笔记】09-一对多关系建表
  5. java获取web项目的绝对路径的方法总结
  6. 设计模式09_代理模式
  7. java classnotfoundexception e_关于解释class文件时出现java.lang.ClassNotFoundException的问题...
  8. 这份中台与数据报表的干货我写了10小时,真不想告诉你
  9. 如何规划农商行商业智能系统中的决策分析系统?
  10. python和环境变量_python 读取和设置环境变量