写点什么

使用 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:313594
用户头像

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

关注

评论

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

Java中高级核心知识全面解析,Java入门教程免费视频

JVM调优资料

Java 程序员 后端

全网各大厂iOS面试题-文集大全

iOSer

ios 面试

九月开学

escray

生活记录 9月日更

5年Java经验字节社招:半月3次面试,Java资料

欢喜学安卓

Java 程序员 后端

Java中高级核心知识全面解析(3),Java编程入门到精通

JVM调优资料

Java 程序员 后端

Java基础知识总结(超详细整理,你有过迷茫吗

Java 程序员 后端

Java实现数据结构中的八种排序方法(1)

Java 程序员 后端

Paxos理论介绍(4): 动态成员变更

OpenIM

Java 线程池原理分析,一举拿下腾讯美团滴滴offer

JVM调优资料

Java 程序员 后端

Java中高级核心知识全面解析(1),Java开发实战

JVM调优资料

Java 程序员 后端

Java内存区域总结(堆

Java 程序员

Java学习笔记-集合,985研究生被小公司领导留了3年

Java 程序员 后端

解读知识蒸馏模型TinyBert

华为云开发者联盟

mindspore 知识蒸馏 TinyBert 信息瓶颈 蒸馏

2021ToB投资盘点:腾讯疯狂、阿里克制、字节激进

ToB行业头条

腾讯 字节跳动 阿里

2021最新38道Spring大厂面试题,你碰到过哪道,电商秒杀Java面试题

欢喜学安卓

Java 程序员 后端

低代码与专业代码有什么区别?

低代码小观

程序员 开发者 低代码 开发工具 低代码开发平台

Java中高级核心知识全面解析(2),腾讯Java面试

JVM调优资料

Java 程序员 后端

Java反射之Method的invoke方法实现,全栈系统化的学习路线

Java 程序员 后端

Java学到什么程度才算精通?,看完老板就给加薪了

Java 程序员 后端

5分钟学会Flutter开发

百度Geek说

flutter 大前端 移动端

宝藏昇腾AI应用推荐!CANN带你体验黑白图像自动上色的快乐~

华为云开发者联盟

开源 黑白 图像 CANN 昇腾

FunTester框架Redis压测预备

FunTester

redis 性能测试 测试框架 FunTester 测试发开

2021-07-26 日期时间类,万字总结

欢喜学安卓

Java 程序员 后端

RVB2601应用开发实战系列六:网络播放器设计(二)

Roy夹馍

risc-v 嵌入式开发 risc-v开发板

NVMe over TCP高性能文件存储,焱融科技+Lightbits让未来照进现实

焱融科技

云计算 分布式 高性能 存储 nvme

微信PaxosStore内存云揭秘:十亿Paxos/分钟的挑战

OpenIM

Java8-Stream:2万字20个实例,价值2000元的Java学习资源泄露

JVM调优资料

Java 程序员 后端

Java实现数据结构中的八种排序方法

Java 程序员 后端

Java 小记 — RabbitMQ 的实践与思考,Redis灵魂14问

JVM调优资料

Java 程序员 后端

Java反射的简单入门

Java 程序员 后端

java-注解,最新Java笔试题分享

JVM调优资料

Java 程序员 后端

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