写点什么

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

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

关注

评论

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

训练营第二周课程总结

爱码士

训练营

JAVA魅力之神奇的数组带给你不一样的乐趣

小Q

Java 学习 架构 面试 数组

Scrapy 源码剖析(四)Scrapy如何完成抓取任务?

Kaito

Python 爬虫 Scrapy 源码剖析

为什么 React Hooks 优于 HOCs(译)

西贝

Java 翻译 React Hooks HOC

5G应用的实时决策

VoltDB

5G 物联网 工业互联网 技术分享

网络直播打赏背后的套路:刺激用户不理智消费

石头IT视角

从零实现一个动态表单设计(编辑)器

徐小夕

Java 编辑器 H5 Node React

Redis还可以做哪些事?

Java旅途

redis

接口测试(apipost、jmeter和python脚本)

测试人生路

Python 接口测试 测试工具

面试官:讲一下缓存穿透、缓存雪崩和缓存击穿?

bigsai

redis 缓存穿透 缓存击穿 缓存雪崩

TCP/IP 基础知识总结

苹果看辽宁体育

后端 计算机网络 计算机

1分钟教你如何整理 React 知识体系

Leo

学习 大前端 React

基于服务设计的线上展览

京东科技开发者

云安全

Scrapy 源码剖析(三)Scrapy有哪些核心组件?

Kaito

Python 爬虫 Scrapy 源码剖析

队列实现栈的3种方法,全都击败了100%的用户!

王磊

Java 算法和数据结构

酷睿i5-10600KF对标锐龙7 3700X,游戏表现领先且售价更香

E科讯

给打工人熬一锅「毒」鸡汤

Java_若依框架教程

程序员 打工人 毒鸡汤

阿里二面惨败,痛定思痛狂刷1000+面试题,成功五面上岸滴滴(面经+面试题分享)

Java架构追梦

Java 架构 腾讯 面试 蚂蚁金服

架构师训练营第 1 期第 7 周作业

业哥

老板下了死命令,要把日志系统切换到Logback

沉默王二

Java logback 日志系统

元模型驱动(二)构建元模型ーGME构建分层模型

KaYa

DDD Kaya MDA GME MDD

java安全编码指南之:文件和共享目录的安全性

程序那些事

代码规范 java安全 java安全编码指南 java编码 程序那些事

轻量型GPU应用首选 京东智联云推出NVIDIA vGPU实例

京东科技开发者

人工智能 gpu

进“大厂”的故事

北风

职业规划 职业成长 大厂

Go 与异步 IO - io_uring 的思考

IceberGu

Linux 异步IO io_uring Go 语言

【架构师训练营 1 期】第六周学习总结

诺乐

Flink State 误用之痛,你中招了吗?

Apache Flink

flink

【架构师训练营 1 期】第六周作业

诺乐

元模型驱动(一)构建元模型ーGME入门

KaYa

DDD Kaya MDA GME MDD

训练营第二周作业

爱码士

Java-技术专题-时间工具类的使用方案

洛神灬殇

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