写点什么

Entity Framework 窍门

2009 年 6 月 10 日

微软 ADO.NET 团队的程序经理 Alex James 最近发布了一系列关于 Entity Framework 窍门的博客文章。这些系列文章涵盖了 EF3.5 到 EF4.0 的内容,对于使用 Entity Framework 的构架师和开发人员来说,都能从中受益匪浅。

目前这个系列文章已经发表了 24 篇,讲到的内容有:

  1. 在 Entity Framework 中如何对 Relationship(对象关系)进行排序。讲解了在对关系进行排序的时候遇到的问题,和作者的一个解答。如果你遇到类似问题,希望在这里可以找到答案。
  2. Entity Framework 图书推荐。作者推荐了这三本书: ADO.NET Entity Framework Programming Entity Framework Professional ADO.NET 3.5 with LINQ and the Entity Framework
  3. 如何开始使用T4 T4 就是文本模板转换工具包(Text Template Transformation Toolkit)。EF 使用 T4 来帮助代码生成和模型构建,也被用于 ASP.NET MVC 和 Dynamic Data 中。作者在这篇文章中简单介绍了一些 T4 的用法。
  4. 概念结构定义语言(Conceptual Schema Definition Language,CSDL)的规则。CSDL 用来描述 EF 的实体数据模型(EDM),由于 EF 文档中缺乏 CSDL 相关的内容,作者在这里给出了 CSDL 规则的学习资源
  5. 如何限制从 EF 查询返回的类型。作者讲到如何只返回父类型而不要子类型,并给出了一种理想的写法(目前还不支持,他的团队估计正在努力实现)。
  6. 何时及如何使用提前加载(Eager Loading)
  7. 如何在.NET 3.5 SP1 中伪造外键属性
  8. 如何使用 LINQ to Entities 编写“WHERE IN”风格的查询
  9. 如何无需检索就可删除对象
  10. 如何理解 EF 中“行话”。作者对 EF 中的一些专门术语进行了简要解释。
  11. 如何避免关系跨越(Relationship Span )。关于 Relationship Span,作者在第 10 个窍门中做了解释,就是指 EF 为了保证某些功能的正常运行,而获取的多余外键值。
  12. 如何选择继承策略(Inheritance Strategy)。作者对 TPH(每个层次关系一张表,Table Per Hierarchy),TPT(每个类型一张表,Table Per Type)和 TPC(每个真实类一张表,Table Per Concrete Class)进行了一个比较。
  13. 如何用简单的方式附加 Entity 对象。作者讲解了分别在.NET 4.0 和.NET 3.5 SP1 中附加 Entity 对象的方式,.NET 4.0 相对.NET 3.5 SP1 来说非常的简单。
  14. 如何缓存 EF 的引用数据(Reference Data)
  15. 如何避免加载不需要的属性
  16. 如何在.NET 3.5 中模仿.NET 4 的 ObjectSet
  17. 如何使用 AttachAsModified 实现一步更新。作者封装了一个名为 AttachAsModified 的扩展方法,把上述的一些窍门进行了融合。
  18. 如何决定你的 ObjectContext 的生存期
  19. 如何在 EF 中使用乐观并发(Optimistic Concurrency )。作者提到只要把某个实体属性的 Concurrency Mode 设置为 Fixed 就可,最重要的是讲解了如何处理乐观并发异常。
  20. 如何处理固定长度的键
  21. 如何在 EF 4.0 中使用 Single() 运算符
  22. 如何让 Include 方法真正地“包含”。作者讲到在提前加载的时候,如何让 Include 方法真正地起到“包含”的作用。
  23. 如何在 EF 4.0 中伪造 Enums 。由于 Enums 已经不存在于 EF4 中了,所以作者给出了一种解决方法。
  24. 如何从一个 Entity 对象中得到 ObjectContext

这个系列文章,作者还在持续更新中,大家可以经常访问他的博客来进一步获取新内容。

另外值得一提的是,Alex James 在进入微软之前独立开发了 Base4.NET 这个与 EF 有异曲同工之妙的开源框架,和大家分享了他超过 10 年的编程经验。当时让很多人都很振奋期待。虽然他已经停止开发这个组件,但相信他的很多思想已经带入了 EF 中。

2009 年 6 月 10 日 21:504183
用户头像

发布了 254 篇内容, 共 38.9 次阅读, 收获喜欢 1 次。

关注

评论

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

如何让解决无法访问 GitHub 的问题?

JackTian

GitHub

白天写代码,晚上摆地摊!9年前摆地摊学会了这些道理...

王磊

Android工程架构演进及康威定律

石头

大厂经验(1):一套Web自动曝光埋点技术方案

DeeperMan

大数据 数据采集

分布式架构,刚性事务-2PC必须注意的问题及3PC详细解

奈学教育

分布式架构 2PC注意事项 3PC详解

万字总结——反射(框架之魂)

学习Java的小姐姐

Java 反射 Java 25 周年

C++:两百字三段代码解决函数返回局部变量问题

韩小非

c++ 函数栈调用 返回局部变量

我是一个连地摊都不会摆的废人

Neco.W

创业 投机 投机者 地摊

csapp-chapter2

卓丁

深入理解计算机系统 csapp

深入理解JVM垃圾回收机制 - 何为垃圾?

WANDEFOUR

深入理解JVM 垃圾回收机制

深入理解Java虚拟机

WANDEFOUR

深入理解JVM

别做误人子弟的「职业导师」

Tony Wu

职业成长 导师 教练

NIO 看破也说破(五): 搞,今天就搞,搞懂Buffer

小眼睛聊技术

Java 学习 读书笔记 架构 后端

HTML5 && CSS

shirley

html5 css3

csapp-chapter1

卓丁

深入理解计算机系统 csapp

【大厂面试03期】MySQL是怎么解决幻读问题的?

NotFound9

MySQL 数据库 编程 架构

游戏夜读 | 网络游戏怎么赚钱?

game1night

大数据中台之Kafka,到底好在哪里?

奈学教育

kafka

Silicon Labs Gecko bootloader 简介

taox

zigbee bootlaoder

ARTS-WEEK02

lee

MyBatis启动之XMLConfigBuilder解析配置文件(二)

ytao

后端 mybatis

机器学习算法评估指标——2D 目标跟踪

做技术BP的文案Gou

学习 2D 评估标准

过滤器 和 拦截器 6个区别,别再傻傻分不清了

程序员内点事

Java

判例学习(一)梨视频诉字节跳动帮助侵权二审判决

尹晓铁

学习 读书笔记 互联网 知识产权 法律

hexo博客系统的实现原理与搭建

音视频专家-李超

Hexo 博客

TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?

小林coding

Linux TCP 网络安全 计算机网络 网络协议

python3.8.3安装ipython和jupyter

LinkPwd

python3.x Jupyter Notebook

预告|2020中国CRM品牌测评报告

人称T客

centos6.9开机启动服务说明

唯爱

强烈安利第一个画图工具!

我是程序员小贱

高效工作 高效

5G时代,如何彻底搞定海量数据库的设计与实践

奈学教育

海量数据库的设计与实践

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Entity Framework窍门-InfoQ