【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

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

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

关注

评论

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

芯片破壁者(二十四):1987战役启示录

脑极体

jstat使用实用教程

JavaPub

Java JVM

职业成长就是一个逐渐“变帅”的过程

L3C老司机

资深大牛带你了解源码!阿里内部Android笔记火爆IT圈,醍醐灌顶!

欢喜学安卓

android 程序员 面试 移动开发

SpringBoot系列1——概述和快速入门

程序员的时光

springboot 七日更 28天写作

【Node.js】静态页面和简单的路由

德育处主任

大前端 Node 28天写作

智能电车小白从入门到了解(Day1/28)

mtfelix

自动驾驶 28天写作 智能电车 电动汽车

MySQL中的哥哥表、妹妹字段,是什么鬼?

Java MySQL 数据库

缓存穿透,缓存击穿,缓存雪崩

en

redis 缓存穿透 缓存击穿 缓存并发

【计算机内功修炼】三:一文彻底理解IO多路复用

码农的荒岛求生

epoll

28天瞎写的第二百一二天:一次删库没跑路的故事

树上

28天写作 删库

架构师训练营第 1 期 - 第 12 周 - 命题作业

wgl

架构师训练营第 1 期

手把手教你如何巧用Github的Action功能

flutter android 持续集成

【薪火计划】08 - 非暴力沟通

AR7

管理 28天写作

LeetCode题解:17. 电话号码的字母组合,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

意识会在哪个早晨降落——「幻想短篇1/28」

道伟

28天写作

架构师训练营 1 期 - 第 十四周总结(vaik)

行之

「架构师训练营第 1 期」

腾讯T3面试官透露!360°深入了解Flutter,聪明人已经收藏了!

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第 1 期 - 第 12 周 - 学习总结

wgl

「架构师训练营第 1 期」

架构师训练营第七周课后作业

万有引力

牛啤了!阿里技术官整理的这份《Java面试手册5000题》已经成功让数百名社招生“圆梦BATJ”

Java 编程 面试

网络工程师职业指南

MySQL慢查询(上):为啥会这么慢?

架构精进之路

MySQL MySQL优化 MySQL使用 28天写作

极客大学架构师训练营大作业

Meow

写在再次学习python之前-why篇

赵开忠

Python 28天写作

区块链的前世今生(1)

抗哥

架构师第 3 课作业及学习总结

小诗

「架构师训练营第 1 期」

架构师第 4 课作业及学习总结

小诗

「架构师训练营第 1 期」

谬误词典:置信度

lidaobing

随机漫步的傻瓜 28天写作 谬误词典

极客大学架构师训练营大作业

Meow

技术人小故事-团队愿景篇-第1段

Ian哥

28天写作

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