写点什么

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

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

关注

评论

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

“稚晖君”为2022昇腾AI创新大赛打call 期待广大开发者加入

极客天地

开发者必备:一文快速熟记【数据库系统】和【软件开发模型】常用知识点

小阿杰

软件开发流程 软件开发原则 数据库系统 签约计划第三季

跨端技术方案选什么好?

Geek_99967b

跨端

Java技术:SpringBoot实现邮件发送功能

天使不哭

Java email #开源 8月月更

阿里云架构师金云龙:基于云XR平台的视觉计算应用部署

阿里云弹性计算

视觉计算 计算巢 云XR平台 GPU实例

每日一R「02」所有权与 Move 语义

Samson

签约计划第三季 8月月更 ​Rust

每天一个CSS小特效,文字闪烁——【钢铁侠:爱你三千遍】

前端小刘不怕牛牛

JavaScript html/css 8月月更

SpringMVC(三、JDBCTemplate)

开源 springmvc 8月月更

FileZilla搭建FTP服务器图解教程

天使不哭

#开源 8月月更

781. 森林中的兔子

小卢要刷力扣题

力扣 8月月更

为什么数字钱包需要引入小程序生态

Speedoooo

小程序 第三方支付 小程序容器 移动钱包

5个 Istio 访问外部服务流量控制最常用的例子,你知道几个?

万猫学社

云原生 istio envoy Istio流量管理

小程序+自定义插件的关键性

Geek_99967b

小程序

上海一科技公司刷单被罚22万,揭露网络刷单灰色产业链

石头IT视角

全面解析FPGA基础知识

芯动大师

签约计划第三季

SRv6性能测量

穿过生命散发芬芳

8月月更 SRv6

“车家互联”新态势,小程序实现物联网多场景互通

Speedoooo

小程序 智能家居 小程序容器 电动车

分享 6 个 Vue3 开发必备的 VSCode 插件

Geek_z9ygea

vue.js 前端 vscode vuejs

开源一夏 | 对于Angular表达式以及重要指令的研究心得【前端实战Angular框架】

恒山其若陋兮

开源 8月月更

2022Nginx实战教程,由浅入深

LoneWalker、

nginx

十步以内,用小程序快速生成App!

Geek_99967b

小程序

README_Albumentations

G_Meteor

操作系统:SSH协议知识介绍

天使不哭

Linux SSH #开源 8月月更

大型分布式存储方案MinIO介绍,看完你就懂了!

天使不哭

存储 MINO #开源 8月月更

图解VirtualBox安装CentOS 7

万猫学社

Centos 7 virtualbox

带着昇腾去旅行:一日看尽金陵城里的AI胜景

脑极体

shell之变量详解,让你秒懂!

Albert Edison

Linux centos 运维 shell脚本编程 8月月更

10个 Istio 流量管理 最常用的例子,你知道几个?

万猫学社

云原生 istio envoy Istio流量管理

重要的不是成为海贼王,而是像路飞一样去冒险

沃德

2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day

TiDB 社区干货传送门

在“企业通讯录”的盲区,融云的边界与分寸

融云 RongCloud

企业 IM im开发

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