logo资料库

C# EF框架PDF详细介绍使用方法.pdf

第1页 / 共85页
第2页 / 共85页
第3页 / 共85页
第4页 / 共85页
第5页 / 共85页
第6页 / 共85页
第7页 / 共85页
第8页 / 共85页
资料共85页,剩余部分请下载后查看
Entity Framework 学习初级篇 1--EF 基本概况 ............................................................... 2 Entity Framework 学 习 初 级 篇 2--ObjectContext 、 ObjectQuery 、 ObjectStateEntry、ObjectStateManager 类的介绍 .................................................. 7 Entity Framework 学习初级篇 3-- LINQ TO Entities ............................................ 10 Entity Framework 学习初级篇 4--Entity SQL ............................................................ 17 Entity Framework 学习初级篇 5--ObjectQuery 查询及方法 .................................. 23 Entity Framework 学习初级篇 6--EntityClient ......................................................... 31 Entity Framework 学习初级篇 7--基本操作:增加、更新、删除、事务 ................... 37 Entity Framework 学习中级篇 1—EF 支持复杂类型的实现 ......................................... 41 Entity Framework 学习中级篇 2—存储过程(上)........................................................... 47 Entity Framework 学习中级篇 3—存储过程(中)........................................................... 54 Entity Framework 学习中级篇 4—存储过程(下)........................................................... 61 Entity Framework 学习中级篇 5—使 EF 支持 Oracle9i ............................................ 67 Entity Framework 学习高级篇 1—改善 EF 代码的方法(上) .................................... 75 Entity Framework 学习高级篇 2—改善 EF 代码的方法(下) .................................... 81 Entity Framework 学习结束语 ........................................................................................... 84
Entity Framework 学习初级篇 1--EF 基本概况 最近在学习研究微软的 EF,通过这时间的学习研究,感觉这个 EF 目前 来说还不是很完善,半成品。不过,据说在.Net4.0 中,微软将推荐使用 此框架,并会有所改善。而且,现在基本上所有数据库均提供了对 EF 的 支持。因此,为以后做技术准备可以学习研究以下。但是,我个人觉得就 目前来说,在实际项目慎用此框架。 下面简单的介绍以下这个 EF。 在.Net Framework SP1 微软包含一个实体框架(Entity Framework), 此框架可以理解成微软的一个 ORM 产品。用于支持开发人员通过对概念性 应用程序模型编程(而不是直接对关系存储架构编程)来创建数据访问应 用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。 Entity Framework 应用程序有以下优点:  应用程序可以通过更加以应用程序为中心的概念性模型(包括 具有继承性、复杂成员和关系的类型)来工作。  应用程序不再对特定的数据引擎或存储架构具有硬编码依赖 性。  可以在不更改应用程序代码的情况下更改概念性模型与特定 于存储的架构之间的映射。  开发人员可以使用可映射到各种存储架构(可能在不同的数据 库管理系统中实现)的一致的应用程序对象模型。
 多个概念性模型可以映射到同一个存储架构。  语言集成查询支持可为查询提供针对概念性模型的编译时语 法验证。 实体框架 Entity Framework 是 ADO.NET 中的一组支持开发面向数据 的软件应用程序的技术。在 EF 中的实体数据模型(EDM)由以下三种模型 和具有相应文件扩展名的映射文件进行定义。  概念架构定义语言文件 (.csdl) -- 定义概念模型。  存储架构定义语言文件 (.ssdl) -- 定义存储模型(又称逻辑 模型)。  映射规范语言文件 (.msl) -- 定义存储模型与概念模型之间 的映射。 实体框架 使用这些基于 XML 的模型和映射文件将对概念模型中的实 体和关系的创建、读取、更新和删除操作转换为数据源中的等效操作。EDM 甚至支持将概念模型中的实体映射到数据源中的存储过程。它提供以下方 式用于查询 EDM 并返回对象:  LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查 询在概念模型中定义的实体类型。  Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型 中的实体并支持诸如继承和关系等 EDM 功能。  查询生成器方法 --可以使用 LINQ 风格的查询方法构造 Entity SQL 查询。
下图演示用于访问数据的实体框架体系结构: 下面,来学习 EF 的基本使用方法。软件环境::  Visual Studio 2008 +SP1  SQL Server2005/2008 首先,建立一个名为“EFProject”的解决方案,然后添加一个名为“EFModel”的 类库项目。如下图所示。
接着,在 EFModel 项目中,添加“ADO.NET Entity Data Model”项目,如下图 所示: 名称取为“NorthWindEF.edmx”,然后点击“添加”。然后,在后面的步 骤中,数据库选择“NorthWind”后,在选择影射对象是,把表、试图、 存储过程全部都选上,其他的均保存默认的即可。最终生成的结果如下图 所示。
好了,数据模型生成完毕。 最后,谈谈我认为的一些缺点:  Edmx 包含了所有对象的 csdl,ssdl,msl 文件,过于庞大, 如果要手动修改这个文件,一不小心,眼睛看花了,就改错了。 (和数据集一样的毛病)。
 目前 EF 支持表、试图、存储过程,其他的对象不支持,而且 对使用存储过程有很多限制(目前有 EFExtension 提供了更多对 象的支持)。  除了 MS SQL Server 可直接提供这种可视化的设计界面外,其 他的数据库目前还没有提供可视化设计界面(但可以自己来实 现,后面介绍)。  性能问题。(网上看到有说比 ADO.Net 慢 700 百,又有人说比 ADO.net 快的,具体情况我还没测试过, 但我觉得像这个些类型 的框架,性能肯定是比上原生态的 ADO.net 慢) 好了,接下来,学习以下简单的各种操作。 Entity Framework 学 习 初 级 篇 2--ObjectContext 、 ObjectQuery 、 ObjectStateEntry、ObjectStateManager 类的介绍 本节,简单的介绍 EF 中的 ObjectContext、ObjectQuery、ObjectStateEntry、 ObjectStateManager 这个几个比较重要的类,它们都位于 System.Data.Entity.dll 下的 System.Data.Objects 命名空间下。在后续的章节中,我们经常会用到它们的 某些方法,以便完成我们的某些操作或目的。本节,简单的说明一下以后我们可能 会用到的各个类的方法,以方便我们后续的学习。 ObjectContext 封装 .NET Framework 和数据库之间的连接。此类用作“创建”、 “读取”、“更新”和“删除”操作的网关。 ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型 的实例)的数据进行交互。 ObjectContext 类的实例封装以下内容:  到数据库的连接,以 EntityConnection 对象的形式封装。
 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装。  用于管理缓存中持久保存的对象的 ObjectStateManager 对象。 ObjectContext 类的成员方法以说明如下所示:  AcceptAllChanges() 接受所有对该实体对象的更改  AddObject(string,object) 将实体对象添加到制定的实体容器中  ApplyPropertyChanges(string,object) 将以指派的实体对象属性的更改应用到容器中对应的原对象。  Attach(System.Data.Objects.DataClasses.IEntityWithKey entity) 将带主键的实体对象附加到默认的容器中  Attach(string,object) 将实体对象附加到指定的实体容器中  CreateEntityKey(string,object) 给指定的实体对象创建实体主键或如果已存在实体主键,则直接返回该实体的主键  CreateQuery(string,params ObjectParameter[]) 从给定的查询字符串创建 ObjectQuery 对象。  DeleteObject(object) 删除指定的实体对象  Detach(object) 移除指定的实体对象  ExecuteFunction(string,params ObjectParameter[]) 对默认容器执行给定的函数。  GetObjectByKey(System.Data.EntityKey key)
分享到:
收藏