写点什么

使用 Entity Framework 5 的性能注意事项

  • 2012-04-30
  • 本文字数:847 字

    阅读完需:约 3 分钟

虽然 Entity Framework(EF) 5 承诺带来了超越 EF 4 的大幅性能提升,但为了更有效地使用 ORM,我们仍然需要关注一些注意事项——即视图生成、缓存、自动编译的查询、查询执行选项及设计时(Design Time)。

微软已经发布了一份白皮书,概述使用待发布的 Entity Framework 5(它将作为即将到来的.NET 4.5 的一部分发布)时应关注的各种性能注意事项。

以下是一些需要注意的地方:

  • 冷查询执行 vs. 暖查询执行(Cold-vs-Warm query execution)——视图生成这一步(用于从数据库模式到概念模式或从概念模式到数据模式的必要转换)会增加第一次运行查询时的开销,后续运行会因为视图缓存的缘故会更快一些。用户可以通过预生成视图来提升性能
  • 缓存——在对象层次(特别是结合禁用 AutoDetectChanges 改善 DbContext Find() 性能),可用的缓存有查询计划缓存(Query Plan Caching)、元数据缓存(MetaData Caching)及结果缓存(Results Caching)。EF 仍然没有提供二级缓存,不过我们可以参考一些指南进行实现——如 CodePlex 上的示例,以及 Julia Lerman 的文章“ Entity Framework 与 Windows Azure 中的二级缓存”;
  • 可选的无跟踪查询(没有状态跟踪的开销)。目前该选项只对 ObjectQuery 可用,没法适用于 DbSet 及 DbQuery 类;
  • 微型 ORM 风格的快速查询,如数据库上执行SQL 查询以及 ExecuteStoreQuery
  • 设计时注意事项——每个层次对应一张表(Table-per-hierarchy,简称 TPH)vs. 每个类型对应一张表(Table-per-Type,简称 TPT)vs. 每个类对应一张表(Table-per-Class,简称 TPC);其中 TPT 在查询复杂度及性能方面表现最差;
  • 延迟加载 vs. 预先加载 (Lazy-vs-Eager loading)。

Entity Framework 是由微软提供的一款面向.NET 应用程序的商业对象关系映射框架。除了EF 之外,.NET 开发人员还可以选择的一些(开源和商业包括在内)产品有 NHibernate LightSpeed 。另外,还有一些轻量级的微型 ORM 模型像 Dapper.NET PetaPoco Massive

查看英文原文: Entity Framework 5 - Performance Considerations Entity Framework

2012-04-30 20:313569
用户头像

发布了 125 篇内容, 共 44.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

Java初学01:学习路线

爱好编程进阶

Java 程序员 后端开发

易周金融分析 | 银保监会发文规范养老金融;宁波银行拿下消金牌照

易观分析

金融 银行

同域下跨应用登录问题

混合应用开发 融合登录 统一登录

2021 最新版 Spring Boot 速记教程

爱好编程进阶

Java 程序员 后端开发

Java 8 开始新增的 Optional 类

HoneyMoose

如何打造一个爆款H5?

源字节1号

软件开发 H5 小程序开发

面试突击48:死锁的排查工具有哪些?

王磊

Java java面试

网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解

No Silver Bullet

Ex 5月月更 vmin vmax ch

druid源码学习五-AccessController探索

Nick

Druid

《Mybatis 手撸专栏》第8章:把反射用到出神入化

小傅哥

小傅哥 mybatis 源码学习 反射代理 技术框架

3年CRUD经验的Java程序员,金九银十想要跳槽,面试却遭到屡屡碰壁

爱好编程进阶

Java 程序员 后端开发

IDEA 2020

爱好编程进阶

Java 程序员 后端开发

vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践

vivo互联网技术

大数据 hadoop hdfs

手把手教你使用 ESLint + Prettier 规范项目代码

CRMEB

一文看懂——什么是Bonree Server?

博睿数据

Server 博睿数据 IT运维

浅谈 SAP UI5 框架对一些其他前端框架比如 Vue 的支持

汪子熙

JavaScript 前端开发 SAP Fiori 5月月更

大数据培训拉链表优化实践分享

@零度

数据仓库 大数据开发

Java初学者:String类

爱好编程进阶

程序员 后端开发

java高并发系列 - 第28天:实战篇,微服务日志的伤痛

爱好编程进阶

Java 程序员 后端开发

ArrayList源码分析-删除

zarmnosaj

5月月更

OpenHarmony源码解析之电话子系统——通话流程

OpenHarmony开发者

OpenHarmony 电话子系统

java培训千万数据提升速度的 SQL 优化方案

@零度

MySQL JAVA开发

Kubernetes下web服务的性能测试三部曲之二:纵向扩容

程序员欣宸

Java Kubernetes 5月月更 Jemter

C语言_文件操作相关练习题

DS小龙哥

5月月更

听说你想学Python爬虫?我从零教你啊

梦想橡皮擦

5月月更

Liga译文 | 浅析「产品思维」

LigaAI

产品思维

Java多线程学习

爱好编程进阶

Java 程序员 后端开发

Java小白翻身教程-链表结构与编译大法(1)

爱好编程进阶

Java 程序员 后端开发

Java开发的凡尔赛你不懂,晒出12月工资条,直言太辛苦

爱好编程进阶

程序员 后端开发

消息队列调研

ZuccRoger

5月月更

Java必备技能之源码篇(Nginx源码研究之nginx限流模块)

爱好编程进阶

Java 程序员 后端开发

使用Entity Framework 5的性能注意事项_.NET_Roopesh Shenoy_InfoQ精选文章