写点什么

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

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

关注

评论

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

华为云发布CodeArts Check代码检查服务 守护软件质量和安全

科技热闻

写作的“收益”超乎想象

王中阳Go

深度思考 学习方法 写作 写作技巧 写作感悟

使用 DataEase 制作动态轮播仪表板

搞大屏的小北

pip安装报错:Command python setup.py egg_info failed with error code 1

Geek_7ubdnf

Python

我理解的金融级数据库

宫博

分布式数据库 金融行业 oceanbase 金融信创 金融科技创新

Dubbo3 在同程旅行的实践

阿里巴巴中间件

阿里云 云原生 dubbo

大银行数字化升级之后,火山引擎VeDI这次要把能力带给中小金融机构

字节跳动数据平台

大数据 金融 数字化 金融行业

Halcon快速入门教程

嵌入式视觉

定位 算子 测量 HALCON 工业智慧视觉

怎样快速地迁移 MySQL 中的数据?

C++后台开发

MySQL 数据库 中间件 后端开发 C++开发

阿里内部面试手册,Github 上获赞 80K,按这个学,找工作没问题!

架构师之道

Java 程序员 面试

备份谷歌或其他浏览器插件

Geek_7ubdnf

浏览器 Google

小令观点 | 去中心化可没那么难,古代令牌就已经做到了

令牌云数字身份

身份 Web3.0

盘点16款跨平台应用程序开发框架

FN0

跨端框架 跨端运行 跨端发展

服务网格|如何使用 Amesh 配置插件

API7.ai 技术团队

Service Mesh 服务网格 APISIX 网关 Kubernetes Serverless

透视华为云云原生数据库的演进,能给行业带来哪些启发?

华为云开发者联盟

数据库 云原生 后端 华为云 企业号 1 月 PK 榜

Java中Get和Post的使用

Geek_7ubdnf

Java

WXSS 如何进行编译?

FN0

小程序 微信

软件测试/测试开发 | Jenkins 节点该如何管理?

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

当你输入网址,小手一点,然后发生了什么

华为云开发者联盟

前端 HTTP 华为云 企业号 1 月 PK 榜

Java基本语法

Geek_7ubdnf

Java

软件测试/测试开发 | Jenkins job 机制该如何使用?

测试人

软件测试 jenkins 自动化测试 测试开发

10分钟在 Rainbond 上部署 mall 电商项目

北京好雨科技有限公司

SpringBoot实例

Geek_7ubdnf

Java springboot

pip安装后仍有ImportError No module named XX问题解决

Geek_7ubdnf

Python

ModuleNotFoundError No module named 'PIL'问题解决

Geek_7ubdnf

Python

MegCC 新版本来啦!新增 Benchmark 等工具,性能大幅提升!有奖征文活动同步启动

MegEngineBot

深度学习 benchmark MegEngine MegCC 模型编译器

【碎碎念】下雪了

Firshare

年终总结

跨域:后端工程师最熟悉的陌生“人”

华为云开发者联盟

后端 华为云 跨域 企业号 1 月 PK 榜

Linux下OpenCV出现错误:ASSERT false in file qasciikey.cpp, line 501

Geek_7ubdnf

Linux OpenCV

软件测试/测试开发 | Jenkins 如何参数化job ?

测试人

软件测试 持续集成 jenkins 测试开发 测试开发自动化测试

从数据到价值,DataOps精益数据运营概述

阿里技术

数字化 DataOps

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