50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

Qz学算法-数据结构篇(顺序存储二叉树、线索化+遍历)

浅辄

数据结构 三周年连更

【程序猿未来之路】作为互联网技术人的“我们”该如何破局 | 社区征文

码界西柚

4月日更 AIGC 三周年征文 三周年连更 生存指南

为什么 Go for-range 的 value 值地址每次都一样?

AlwaysBeta

Go 面试

2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109

福大大架构师每日一题

golang 算法 rust 福大大

如何进一步提高AI输出质量?

石云升

AI ChatGPT 三周年连更

vue2.x中keep-alive源码解析以及LRU缓存策略使用

不叫猫先生

缓存 Vue LRU keep-alive实现原理 三周年连更

设计一个即时群聊天系统软件(采用华为云ECS服务器作为云服务端 )

DS小龙哥

三周年连更

OpenGL入门二:绘制三角形

轻口味

opengl 图形图像 三周年连更

1500字讲懂单体架构和微服务架构的区别

Java架构历程

三周年连更

Windows下 IDE工具常见编译错误FAQ下

鸿蒙之旅

OpenHarmony 三周年连更

什么是 RUM JavaScript

汪子熙

JavaScript 前端开发 三周年连更

为什么老有人想让我们“程序员”失业? | 社区征文

se7en

三周年征文

这 30 个工具和服务可以更好地监控和管理 Linux 服务器,很全面!

wljslmz

三周年连更

重磅!算能公司算丰SG2042斩获第六届数字中国建设峰会“十大硬核科技”

极客天地

OpenGL入门一:基础知识及概念

轻口味

opengl 图形图像 三周年连更

面对“失业焦虑”我们可以做些什么?| 社区征文

莪是男神

三周年征文

深入理解vue2.x中Object.defineproperty()和vue3.x中Proxy

不叫猫先生

Vue 三周年连更

Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投

西柚子

算法题每日一练:螺旋矩阵 II

知心宝贝

数据结构 算法 前端 后端 三周年连更

为什么说:Linux中一切皆文件?

wljslmz

Linux 三周年连更

算法题每日一练:无重复字符的最长子串

知心宝贝

数据结构 算法 前端 后端 三周年连更

KubeShark: Kubernetes的Wireshark

俞凡

Kubernetes 云原生

一文了解Spring Framework 5 新 Web 框架:Spring WebFlux

Java架构历程

三周年连更

Matlab实现周期卷积

袁袁袁袁满

三周年征文

IT组织架构之反思

agnostic

IT组织

什么是软件开发领域的 obsolete 或者 deprecated 含义

汪子熙

软件工程 软件开发 三周年连更

技术分享:如何将JSON中的日期格式字符串替换为占位符

IT蜗壳-Tango

三周年连更

如何实现网站访问量的统计?

海拥(haiyong.site)

三周年连更

Django笔记二十之手动编写migration文件

Hunter熊

Python django migration

音视频八股文(9)-- flv的h264六层结构和aac六层结构

福大大架构师每日一题

音视频 ffmpeg 福大大

Prometheus监控神器-自动发现篇

乌龟哥哥

三周年连更

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