最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

MySQL索引知识介绍

Simon

MySQL 索引结构

KK日知录20200515

kimmking

从ClickHouse的名字由来讲起

nauu

数据库 大数据 分布式 OLAP Clickhouse

敏捷团队成员的工作量指标真的那么重要吗?

金生水起

敏捷开发 Scrum精髓 敏捷精髓 Agile

搜商:高效的使用搜索引擎

石云升

高效搜索 搜索技巧 搜商

数据分析的利器-clickhouse概述

流沙

数据库 Clickhouse

用"结构性张力"构建自驱力

Yanel 说敏捷产品

团队管理 敏捷 团队协作 项目

常见的主从报错集锦

一个有志气的DB

MySQL 主从配置 主从同步

Android | Tangram动态页面之路(一)需求背景

哈利迪

android

BVR 才是变革的核心

Yanel 说敏捷产品

团队管理 项目管理 敏捷 敏捷开发 敏捷精髓

【大咖说问大咖】关于开源的那些事 —— PingCAP CTO 黄东旭 Q&A 交流帖

InfoQ写作社区官方

开源 写作平台 大咖说 技术交流 热门活动

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (七)CORRECT边界条件

编程道与术

Java 编程 软件测试 TDD 单元测试

2020 敏捷产品基本盘

Yanel 说敏捷产品

产品 敏捷 产品设计 产品推荐

Java实现Base64

Java

提升编程效率:重构

Page

高效工作 敏捷开发 重构 高效

Serverless: 2020年函数计算的冷启动怎么样了

刘宇

Kafka零数据丢失的配置方案

奈学教育

kafka kafka配置 kafka数据

spring注入bean的几种策略模式

王德发

Java Spring Boot 测试驱动开发实战营

多多益善的MacOS文件管理方案

陈东泽 EuryChen

macos Mac apple 提升效率 文件管理

【Howe学爬虫】全国统计用区划代码爬取

Howe

Java 爬虫

工程师、程序员和产品经理

王泰

程序员 产品经理 IT 软件工程师 工程师思维

何时开始重构?

Page

敏捷开发 重构

太赞了,VSCode 上也能画流程图了!

GitHubDaily

visual-studio GitHub 程序员 vscode 开发者工具

真的!只需 “六步” 实现图像特定物体识别!!!

周果

Python OpenCV 计算机视觉 图像识别 物体检测

学习型组织的修炼之道

Yanel 说敏捷产品

团队管理 项目管理 敏捷 团队协作 组织转型

近期工作的几点感想

Leiy

app退出登录

看完这篇操作系统,和面试官扯皮就没问题了

cxuan

操作系统 计算机基础

为什么我喜欢的大V拉黑我?

lmymirror

经历 后真相时代 日常思考

Intellij IDEA2020.x如何安装Lombok插件

龙眼果

开发者工具

揭秘!开源软件背后的神秘组织

Apache Flink

大数据 flink 流计算 实时计算

MySQL备份基础

一个有志气的DB

MySQL 数据

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