写点什么

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

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

关注

评论

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

详解数据中台的底层架构逻辑

五分钟学大数据

数据中台 数据仓库 1月月更

C语言-基本数据类型与位运算

DS小龙哥

C语言

毕业设计-电商秒杀系统

doublechun

「架构实战营」

10 Prometheus 之监控应用程序

穿过生命散发芬芳

Prometheus 1月月更

2021大厂面试题之redis篇

小麦

面试题 redis' 大厂面经

hive metastore配置kerberos认证

从大数据到人工智能

hive kerberos hive metastore

2021年vivo互联网技术最受欢迎文章TOP25

vivo互联网技术

数据库 前端 服务器 年度总结 Vivo

C语言-函数的可变形参(不定形参)

DS小龙哥

C语言

国内外研究多模态的知名团队有哪些?

你?

推荐 研究

Amazon Elastic File System新增低成本单区存储类

亚马逊云科技 (Amazon Web Services)

存储

二、程序如何执行

喵叔

Kafka核心组件之Controller概念介绍(1)

Kafka中文社区

C语言-数组

DS小龙哥

C语言

新型数据中心的必选项:“超融合”的三重价值

脑极体

Tableau Day5:空间分析

贾献华

1月月更

一个cpp协程库的前世今生(十五)递归互斥量

SkyFire

c++ cocpp

如果你是加勒比海盗首领,会选择哪种算法来使价值最大化?

博文视点Broadview

C语言-函数的定义、声明、传参

DS小龙哥

C语言

Go 中实现用户的每日限额(比如一天只能领三次福利)

万俊峰Kevin

Go 限流 Go 语言 rate-limit RateLimit

1 月月更|推荐学Java——数据表高级操作

逆锋起笔

MySQL 事务 范式 Java后端 MySQL 数据库

无聊的周末用Java写个扫雷小游戏

秦怀杂货店

Java 数据结构 游戏

Java 常用类大讲解!2️⃣(手写 API、源码必备)

XiaoLin_Java

Java 集合 基础 1月月更

基于多源数据画像的失败用例智能分析

华为云开发者联盟

云原生 测试 日志 失败用例 智能分析

Java中方法重写和方法重载的6个区别?

王磊

Vue3 企业级网站建设

詹Sir

Vue 建站

ReactNative进阶(十一):realm 数据库

No Silver Bullet

React Native 1月月更 realm

新增功能 – Amazon FSx for NetApp ONTAP

亚马逊云科技 (Amazon Web Services)

存储

Kafka的副本管理器读写副本消息

JavaEdge

1月月更

C语言-语句(if,for,while,switch,goto,return,break,continue)

DS小龙哥

C语言

ONES 收购为知笔记,全面升级企业知识库产品

万事ONES

ONES 知识库

2022年中科柏诚服务再提升,为银行数字化转型提供精准化助力

联营汇聚

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