AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

[翻译] InnoDB 空间文件布局基础

keaper

MySQL 数据库 后端 服务端 innodb

如何与同事相处

escray

学习 极客时间 朱赟的技术管理课 7月日更

细说节流(Throttle)和防抖(Debounce)

devpoint

防抖 节流 7月日更

架构实战营 - 模块 9- 作业

请弄脏我的身体

架构实战营

4种Spring Boot中集成Elasticsearch的方法实战

北游学Java

Java Spring Boot ES

Vue进阶(六):组件之间的数据传递

No Silver Bullet

Vue 组件 7月日更 数据传递

从家里到阿里,学弟求职的一年

程序员鱼皮

Java 数据库 redis 面试 求职

在线正则表达式可视化工具

入门小站

工具

Seldon 使用 (四):内置的推理服务TFServing

托内多

tensorflow kubeflow seldon tfserving

[翻译] InnoDB 空间文件中的页面管理

keaper

MySQL 数据库 后端 服务端 innodb

使用Apache Spark构建可靠的数据湖(九)

Databri_AI

spark Data Lake iceberg Hudi

Redis - 配置文件

旺仔大菜包

redis

Linux之grep命令

入门小站

Linux

Go语言:指针和unsafe.Pointer有什么区别?

微客鸟窝

Go 语言

[翻译] 使用 innodb_ruby 探索 InnoDB 的页面管理

keaper

MySQL 数据库 后端 服务端 innodb

企业架构师的职业发展

在天涯的海角

架构师 职业发展 企业架构师

第九课作业

杰语

Apache Druid 安装的时候进行 Java 版本校验没有输出

HoneyMoose

Java为什么用迭代器

卢卡多多

7月日更

程序员必备技能之SpringBoot的自动装配原理,很详细,建议收藏!!!

AI乔治

Java spring 架构 微服务 springboot

详解轻量日志聚合系统Loki架构

运维研习社

Grafana 日志系统 Loki

Vue进阶(十八):router.beforeEach 与 router.afterEach 钩子函数

No Silver Bullet

Vue 钩子函数 路由 7月日更

JVM知识整理

十二万伏特皮卡丘

JVM

这份Java面试八股文让329人成功进入大厂,堪称2021最强

北游学Java

Java 面试

架构实战营 模块三 作业

一雄

作业 架构实战营 模块三

Python OpenCV 图像的二值化操作再次学习与图像平滑处理(卷积处理)

梦想橡皮擦

Python 7月日更

实战架构营模块三作业-外包学生管理系统架构设计

王晓宇

Python 正则表达式急速入门

喵叔

7月日更

golang学习之路--内存分配器

en

内存 Go 语言

C# BS方向 该如何规划学习?【学习路线指南】

Andy阿辉

C# 学习 编程 程序猿

强强联手:2021强网杯LongTimeAgo复盘分析

网络安全学海

网络安全 信息安全 渗透测试 漏洞扫描 强网杯

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