写点什么

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

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

关注

评论

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

Spring Security 两种资源放行策略,千万别用错了!

江南一点雨

Java spring springboot springsecurity

python实现·十大排序算法之计数排序(Counting Sort)

南风以南

Python 排序算法 计数排序

redis过期策略和内存淘汰机制

wjchenge

假如孔乙己是程序员

顿晓

学习 程序员 孔乙己

点击劫持:无X-Frame-Options头信息(修复)

唯爱

好的软件工程原则

pydata

Android原生人脸识别Camera2+FaceDetector 快速实现人脸跟踪

sar

你真的会用Mac中的Finder吗

Winann

macos 效率 App Mac

Vol.1 Java初探,新手必看!

pyfn2030

编程 新手指南

终于,我也到了和Eclipse说再见的时候,难说再见

程序员小跃

Java eclipse IDEA

数据与广告系列三:合约广告与与衍生的第三方广告数据监控

黄崇远@数据虫巢

数据挖掘 互联网 广告 移动互联网

软件开发生产率改进之我见(二)

清水

软件工程 软件开发 技术管理

你为什么“啃不动”你手中的技术书?

图灵社区

Java Python 算法 HTTP R语言

管理规划篇

姜戈

团队管理 团队组织

你的团队是干什么的?

姜戈

团队管理 团队职能

联邦学习与推荐系统

博文视点Broadview

人工智能 大数据 学习 推荐系统

提升输入效率第一步——切换双拼

dongh11

效率工具 提升效率 生产力 分享 有趣

健身一周年:持续锻炼带来无法想象的改变

小鲸数据

学习 职业 专注 健身

突破困局

Neco.W

感悟 工作 创业心态

揭秘神经拟态计算:缘何成为AI界新宠?

最新动态

使用<input>标签实现六个格子验证码输入框

码上生长

Java vue.js 大前端

宕机原因千千万,被雷劈了最无奈

田晓旭

ARTS week 2

锈蠢刀

源码分析 | Mybatis接口没有实现类为什么可以执行增删改查

小傅哥

Java 源码分析 小傅哥 mybatis 编程思维

你的团队想做出什么成果?

姜戈

团队管理

实现元素等高: Flexbox vs. Grid

寇云

CSS css3

一致性算法 Raft 简述

架构精进之路

raft 一致性算法

多线程与线程安全(实例讲解)

YoungZY

Java 多线程 线程安全

栀子花,我们应该像你一样静静绽放

小天同学

个人感想 感悟 日常思考

100天从 Python 小白到大神最良心的学习资源!

JackTian

Python GitHub 学习 Python-100-Days Python-Core-50-Courses

码农远程办公指北

大伟

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