写点什么

Entity Framework 4.0 Beta 新特性

  • 2009-05-20
  • 本文字数:1007 字

    阅读完需:约 3 分钟

Entity Framework 4.0 Beta 1(又称 EF V2)与.NET 4.0 Beta 1 一起发布,包含了一系列的重要改进:自定义代码生成、延迟加载、N 层支持、POCO 支持、DDL 生成、自定义查询等等。

EF4.0 引入的重要改进如下:

  1. 自定义代码生成——集成到 ADO.NET Entity Framework 设计器和 Visual Studio 中的 T4 模版让开发者可控制代码生成
  2. 一些小特性让应用程序的开发更加简单——在模型中的复数形式和单数形式、延迟加载、更多的存储过程映射使得用 Entity Framework 建立应用程序更加容易
  3. 自定义查询——对已有的 LINQ 操作符、用 LINQ 识别更大量的模式集合、在 LINQ 中可编写模型来定义函数以及一系列的其他方法来创建和自定义查询
  4. 生成 SQL 语句的可读性改善——提高所生成的查询语句的可读性并优化 TSQL 性能可使得它更易于理解

以下是 EF 4.0 已有特性改进的详细说明:

N 层开发

N 层开发的一个重要方面是在服务器和客户端之间进行 Entity 状态交换。Diego Vega,ADO.NET Entity Framework 编程经理,进一步详细描述到

实际上你需要的是:

  1. 从断开的图中推断出需要应用什么样的状态改变。
  2. 把那些改变传递给持久化层。

为了帮助程序员实现以上需求,EF 4.0 包含下列 API 调用:

  • ObjectContext.ApplyOriginalValues
  • ObjectStateManager.ChangeObjectState
  • ObjectStateManager.ChangeRelationshipsState

除了底层的 API 以外,EF 还包含自跟踪实体

自跟踪实体知道如何做自身的修改跟踪,而不管那些修改是在那一层发生的。作为一位架构师,自跟踪实体介于 DTO 和 DataSet 之间,包含了两者的长处。

ADO.NET 小组会提供 T4 模版(没有包含在 Beta 中)来生成 ObjectContext 的类和扩展方法。

模型优先

Visual Studio 2010 可以生成 DDL 并创建数据库来存储实体数据模型。开发人员可完全控制整个流程来自定义DDL、选择所需的数据库或者最终映射过程。

延迟加载

在EF 4.0 中,关于实体的延迟加载可以通过设置ContextOptions.DeferredLoadingEnabled 属性为true 来实现。延迟加载能够同代码生成的实体以及POCO 一起工作。默认情况下延迟加载是关闭的,但这个属性可以自定义修改。

POCO 支持

在.NET 3.5 中,EF 对象需要继承 EntityObject 或实现以下的一个接口: IEntityWithKey、IEntityWithChangeTracker 和 IEntityWithRelationships。那会引入领域模型对持久层的高度关注。所有这些约束在 EF 4.0 中都被移除,并允许完全透明的持久性。

查看英文原文: What’s New in Entity Framework 4.0 Beta?

2009-05-20 21:143526
用户头像

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

关注

评论

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

开箱即用的 Prometheus 告警规则集

张晓辉

监控 Prometheus 告警

如何成为一名拖垮整个团队的产品经理?

冰河

深度思考 产品经理 自我思考 产品经历 技能提升

Java也太卷了,应届生找工作都需要准备这些知识点了!

Java架构师迁哥

限时分享:Alibaba技术官整理出来的Java零基础学习笔记

Java架构师迁哥

通过混沌测试发现 HTTP/2 缺陷

卫智雄

女裤裤兜如何影响工业设计?

脑极体

☕【JVM 技术之旅】深入JVM回收器之Parallel Scavenge(上篇)

码界西柚

JVM GC 垃圾收集 5月日更 Parallel Scavenge

架构师实战营模块五

ifc177

交叉验证

Qien Z.

5月日更 交叉验证

使用 Quarkus 和 MicroProfile 实现微服务特性

张晓辉

Kubernetes 云原生 Quarkus Microprofile

业务架构训练营,模块5作业,微博评论高性能架构

好吃不贵

业务架构

Spark如何进行动态资源分配

数据社

spark 5月日更

ubuntu64 位搭建 OpenVINO 系统(下篇)

IT蜗壳-Tango

5月日更

Nginx利用resolver实现动态upstream

运维研习社

nginx 运维 5月日更 动态负载均衡

🔎【Java源码探索】深入浅出的分析 ThreadPoolExecutor

码界西柚

Java 线程池工作原理 ThreadPoolExecutor 5月日更 Worker

架构实战-模块5作业

大师兄

小王毕业两年转行学Java,现在过得比科班生过得还好?

Java架构师迁哥

架构师实战营 模块五总结

代廉洁

架构实战营

大型系统中的证书管理

张俭

微服务 TLS PaaS

Spring XML Schema扩展机制源码解读

Hex

Java spring 后端 Java EE

网络攻防学习笔记 Day30

穿过生命散发芬芳

5月日更 网络攻防

消息队列并不能解耦

Xargin

架构之:并发和并行

程序那些事

架构 软件架构 架构师 程序那些事

Dubbo Admin 部署

青年IT男

dubbo

已经成功拿到字节offer,阿里内部二十三万字 Java 面试题总结

Java 程序员 架构 面试

21岁就走了“狗屎运”(4面拿字节跳动offer Java岗)

Java架构师迁哥

原来真的有外卖员转行学Java,还三面“拿下”拼多多offer!

Java架构师迁哥

随机数在区块链中的应用

CECBC

架构师实战营 模块五作业(设计微博评论的高性能高可用计算架构)

代廉洁

架构实战营

java.net.BindException: Address already in use: JVM_Bind解决方案

咿呀呀

IDEA javaWeb

When others give us advice

escray

学习 极客时间 5月日更

Entity Framework 4.0 Beta新特性_.NET_Abel Avram_InfoQ精选文章