Entity Framework 窍门

阅读数:3976 2009 年 6 月 10 日

话题:.NETDevOps语言 & 开发架构

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

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

  1. 在 Entity Framework 中如何对 Relationship(对象关系)进行排序。讲解了在对关系进行排序的时候遇到的问题,和作者的一个解答。如果你遇到类似问题,希望在这里可以找到答案。
  2. Entity Framework 图书推荐。作者推荐了这三本书:ADO.NET Entity FrameworkProgramming Entity FrameworkProfessional ADO.NET 3.5 with LINQ and the Entity Framework
  3. 如何开始使用 T4T4就是文本模板转换工具包(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<T>
  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 中。