微软 ADO.NET 团队的程序经理 Alex James 最近发布了一系列关于 Entity Framework 窍门的博客文章。这些系列文章涵盖了 EF3.5 到 EF4.0 的内容,对于使用 Entity Framework 的构架师和开发人员来说,都能从中受益匪浅。
目前这个系列文章已经发表了 24 篇,讲到的内容有:
- 在 Entity Framework 中如何对 Relationship(对象关系)进行排序。讲解了在对关系进行排序的时候遇到的问题,和作者的一个解答。如果你遇到类似问题,希望在这里可以找到答案。
- Entity Framework 图书推荐。作者推荐了这三本书: ADO.NET Entity Framework 、 Programming Entity Framework 和 Professional ADO.NET 3.5 with LINQ and the Entity Framework 。
- 如何开始使用T4 。 T4 就是文本模板转换工具包(Text Template Transformation Toolkit)。EF 使用 T4 来帮助代码生成和模型构建,也被用于 ASP.NET MVC 和 Dynamic Data 中。作者在这篇文章中简单介绍了一些 T4 的用法。
- 概念结构定义语言(Conceptual Schema Definition Language,CSDL)的规则。CSDL 用来描述 EF 的实体数据模型(EDM),由于 EF 文档中缺乏 CSDL 相关的内容,作者在这里给出了 CSDL 规则的学习资源。
- 如何限制从 EF 查询返回的类型。作者讲到如何只返回父类型而不要子类型,并给出了一种理想的写法(目前还不支持,他的团队估计正在努力实现)。
- 何时及如何使用提前加载(Eager Loading)。
- 如何在.NET 3.5 SP1 中伪造外键属性。
- 如何使用 LINQ to Entities 编写“WHERE IN”风格的查询。
- 如何无需检索就可删除对象。
- 如何理解 EF 中“行话”。作者对 EF 中的一些专门术语进行了简要解释。
- 如何避免关系跨越(Relationship Span )。关于 Relationship Span,作者在第 10 个窍门中做了解释,就是指 EF 为了保证某些功能的正常运行,而获取的多余外键值。
- 如何选择继承策略(Inheritance Strategy)。作者对 TPH(每个层次关系一张表,Table Per Hierarchy),TPT(每个类型一张表,Table Per Type)和 TPC(每个真实类一张表,Table Per Concrete Class)进行了一个比较。
- 如何用简单的方式附加 Entity 对象。作者讲解了分别在.NET 4.0 和.NET 3.5 SP1 中附加 Entity 对象的方式,.NET 4.0 相对.NET 3.5 SP1 来说非常的简单。
- 如何缓存 EF 的引用数据(Reference Data)。
- 如何避免加载不需要的属性。
- 如何在.NET 3.5 中模仿.NET 4 的 ObjectSet
。 - 如何使用 AttachAsModified 实现一步更新。作者封装了一个名为 AttachAsModified 的扩展方法,把上述的一些窍门进行了融合。
- 如何决定你的 ObjectContext 的生存期。
- 如何在 EF 中使用乐观并发(Optimistic Concurrency )。作者提到只要把某个实体属性的 Concurrency Mode 设置为 Fixed 就可,最重要的是讲解了如何处理乐观并发异常。
- 如何处理固定长度的键。
- 如何在 EF 4.0 中使用 Single() 运算符。
- 如何让 Include 方法真正地“包含”。作者讲到在提前加载的时候,如何让 Include 方法真正地起到“包含”的作用。
- 如何在 EF 4.0 中伪造 Enums 。由于 Enums 已经不存在于 EF4 中了,所以作者给出了一种解决方法。
- 如何从一个 Entity 对象中得到 ObjectContext 。
这个系列文章,作者还在持续更新中,大家可以经常访问他的博客来进一步获取新内容。
另外值得一提的是,Alex James 在进入微软之前独立开发了 Base4.NET 这个与 EF 有异曲同工之妙的开源框架,和大家分享了他超过 10 年的编程经验。当时让很多人都很振奋和期待。虽然他已经停止开发这个组件,但相信他的很多思想已经带入了 EF 中。
评论