第二篇 Entity Framework Plus 之 Query Future
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分)。
今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询性能。
举一个大家最常用功能 “分页” 功能。先贴一段代码。
这类型的代码,大家估计都看到过,也自己写过,简单分析一下。
orders.Count() 返回int 类型,肯定要查询出数据库才知道订单总笔数。
pagerOrders.ToList() 返回 IEnumerable<T> 类型,这个不用解释Entity Framework IEnumerable 和 IQueryable 区别是
IEnumerable 会执行SQL,IQueryable 而不会。所以这句也会去数据库查询一次。
那整个分页功能用Entity Framework 就是最少要两次数据库查询,刚刚上面说了,一个基本的提高性能方法就要减少与数据库打交道次数。
从“分页”功能来说,要是变成只有一次与数据库打交道,那就是对性能有大提升。Entity Framework 自身是没有提供这样的方法。
Entity Framework Plus 库 Query Future 扩展,是一个对Entity Framework 功能的延伸和扩展,能够做到减少数据库打交道次数。使查询性能更高。
一 . Entity Framework Plus 库 Query Future 安装
1. 解决方案 还是我上一篇 第一篇 Entity Framework Plus 之 Audit 用的解决方案“EntityFrameworkPlusSolution”,新增 “EntityFrameworkPlus.QueryFuture.Demo” 控制台项目,作为Entity Framework Plus 库 Query Future 扩展 应用和展示功能项目。项目结构截图如下
项目关系图 (代码图)
2. 为了方便Demo,新增商品业务 相关的 Model,Mapping,以及改动DbContext 如下代码
GoodsModel
GoodsMap
EntityFrameworkPlusDbContext
3. 右键 “EntityFrameworkPlus.QueryFuture.Demo” 项目,选择“管理NuGet程序包”,关联部分 右上角搜索“Z.EntityFramework.Plus” ,然后选择 “EntityFramework Plus (EF6) | Query Deferred”&“EntityFramework Plus (EF6) | Query Futurn” 两项安装
二. Entity Framework Plus 库 Query Future 扩展功能实作
1. 在 “EntityFrameworkPlus.QueryFuture.Demo” 项目 Program 新增3个静态方法,分别是
FindOrdersWithGoodsies() 查询订单信息和商品信息
FindPagerOrders(int pageSize, int pageIndex, out int totalCount) 订单分页查询
FindGoodsMaxWithMinUnitPrice() 查询单价最大和最小的商品
详细代码如下
2. 3个方法的SQL追踪和截图
FindOrdersWithGoodsies
FindPagerOrders(int pageSize, int pageIndex, out int totalCount)
FindGoodsMaxWithMinUnitPrice()
至此比较常用到场景,就已经实作完成,大家看到截图和SQL说明都是一次执行,其他大家可以根据 EntityFramework Plus 源代码和文档(不过是英文,但是基本能够看懂),进行更加深入的了解,了解实现原理,我这里还是抛砖引玉一下。
这篇博文的源代码:https://github.com/haibozhou1011/EntityFramework-PlusSample
相关文章
第一篇 Entity Framework Plus 之 Audit
Entity Framework教程(第二版)
原文地址:http://www.cnblogs.com/davidzhou/p/5376598.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
第二篇 Entity Framework Plus 之 Query Future相关推荐
- 第三篇 Entity Framework Plus 之 Query Cache
离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...
- 第四篇 Entity Framework Plus 之 Batch Operations
用 Entity Framework 进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...
- 第一篇 Entity Framework Plus 之 Audit
一般系统会有登陆日志,操作日志,异常日志,已经满足大部分的需求了.但是有时候,还是需要Audit 审计日志,审计日志,主要针对数据增,改,删操作数据变化的记录,主要是对数据变化的一个追踪过程.其中主要 ...
- 使用 ASP.NET Core, Entity Framework Core 和 ABP 创建N层Web应用 第二篇
介绍 这是"使用 ASP.NET Core ,Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用"系列文章的第二篇.以下 ...
- 第一篇:Entity Framework 简介
先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架.要开发O ...
- Entity Framework学习中级篇
1-EF支持复杂类型的实现 本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中 ...
- Entity Framework 学习中级篇—EF支持复杂类型的实现
http://www.cnblogs.com/xray2005/archive/2009/06/01/1493661.html 本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的 ...
- Entity Framework快速入门笔记第四篇—ModelFirst
前言:在上一篇博客中我们做了一个小的Demo,使用EF实现了对数据库的增删改查的操作,所谓学习,我们就要学会举一反三,所以好好学习一下上一篇的内容还是方便以后的扩展学习,这篇博客我们主要来研究一下Mo ...
- oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)
前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架 终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...
最新文章
- 编程作业—C++初探 简单的学生信息处理程序实现
- JavaScript 学习笔记3
- mysql_connect 废弃_解决Deprecated: mysql_connect():
- Mellanox 8亿美元收购EZchip
- java如何通过grpc连接etcd_grpc通过 etcd 实现服务发现与注册-源码分析
- pythonset是什么类型的游戏_Python集合(set)类型的操作
- HDU 1244 DP
- 使用Javascript正则表达式来格式化XML内容
- 时间管理领域的三八原则
- Web 3.0项目Aluna.Social宣布将ALN代币将分发给2600多个早期采用者
- 基于MATLAB产生式系统(植物识别系统)
- VirtualBox 安装增强功能错误
- 华为x6000刀箱和机架服务器RAID配置和超线程关闭
- 开机动画适配方案_修改开机动画教程
- linux命令里的xz是干嘛的,Ubuntu中的xz命令使用
- kasp技术原理_KASP-基于已知SNP的高通量基因分型
- QQ来信息突然没声音了
- ROS机器人操作系统学习笔记(三)ROS通信架构
- 专业表操作鉴权(增、删、改、id查、全查、名字模糊查)
- The Biggest Water Problem
热门文章
- GridView实现数据编辑和删除(一)
- 对象androidandroid 开发中 如何取得ListView 的 每条Item 的对象
- JavaME程序 Run Anywhere-- 利用反射机制来动态加载声
- 缕一缕c#可null类型
- .Net Core with 微服务 - 分布式事务 - 2PC、3PC
- 在 Azure App Service 上运行 .NET 6 预览版
- 如何在 C# 8 中使用 模式匹配
- 理解 redis 中的 集合对象类型
- 别“躺”着了,赶紧把「复盘」做起来
- 软件如何优雅地向前兼容?