`
gstarwd
  • 浏览: 1525039 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ADO.NET Entity Framework简介

    博客分类:
  • .NET
阅读更多

下一代的ADO.NET的目标是要解决关系数据模型和实际应用程序需要模型之间的鸿沟,那么它是怎么做到的呢?

我们都知道,建立在关系数据库基础之上的应用程序经常需要在不同的表之间做复杂的join操作来取得相关的数据。

比如下面的例子:

           [图1] 

这是一个普通的关系型数据库。这个结构主要描述了雇员的基本信息和雇员的销售情况。

假如我们想取得所有在2006年1月1日招聘过来的全职员工的姓名和职务信息,那么就需要写如下的sql查询语句:

1 SELECT  c.FirstName, e.Title
2 FROM  Employee e
3 INNER   JOIN  Contact c  ON  e.EmployeeID  =  c.ContactID
4 WHERE  e.SalariedFlag  =   1   AND  e.HireDate  >=   ' 2006-01-01 '
5


我们分析一下这个复杂的sql语句,就会发现它存在如下缺点:

1. 如果某个应用程序只处理Employees的信息,但我们必须将逻辑数据关系标准化。这样我们就不得不去关注数据库表与表之间的关系(比如雇员的联系信息和姓名在不同的表中),我们需要人为地在两个表中做内联交叉查询以得到正确的数据。
2. 这里该应用程序仅仅是处理全职雇员(SalariedFlag=1),理想的情况是,我们不应看到其他类型的雇员信息。然而实际上所有的雇员信息都在一个 数据库表中,他们是用一个"SalariedFlag"字段来区分的。这就意味着我们需要关注如何将不同类型的雇员加以区分。理想的情况是这样的:假如我 们只需要处理某个数据子集,系统只需要呈现这部分子集的数据。开发人员应当能够通过声明来指定哪个是需要的数据子集。

综合地说,首先,关系数据模型不能直接匹配应用程序实际的数据模型。其次,关系数据模型不能满足应用程序的实际需要,比如应用程序还需要一些非功能性的需求,这些需求包括操作,数据拥有关系,性能和安全。

为了解决如上问题,ADO.NET引入了Entity Framework,它包含了数据模型以及一些设计时和运行时的服务。通过Entity Framework提供的更高抽象层,应用程序的数据模型就可以直接和数据库的关系数据模型交互。


Entity Data Model

Entity Data Model—简称EDM—是一个实体关系数据模型(Entity-Relationship data model). EDM的一个关键的概念如下:

Entity: Entity是实体类型的实例(例如:Employee, SalesOrder)。它由一个关键字来组织数据记录。多个Entity可以组成Entity-Sets.

RelationShip :RelationShip是关系类型的实例,它关联相关的实体.多个Relationships 可以组成 Relationship-Sets.

除了上面两个核心概念外,EDM模型还支持多种类型的扩展.

继承: 实体类型可以继承于其他的类型.这种类型的继承只继承结构,不提供向面向对象语言的"行为"继承.

复合类型: 定义一个复合类型Address,它可以由StreetAddress, City 和State这些属性复合而成.


我们按照EDM的概念重新定义[图1]:

             [图2]
这里描述了如下元素:
三个实体类型,分别是SalesPerson,SalesOrder和StoreSalesOrder。其中StoreSalesOrder继承自SalesOrder。
一个关系: SalesOrder 和 SalesPerson 之间的关系。
两个实体集(entity-sets):SalesOrders 和 SalesPeople。 实体集SalesOrders 拥有SalesOrder和StoreSalesOrder两个实体类型。

看看上面的模型视图已经更接近应用程序需求了。其中SalesPerson的信息已经不再分布在不同的数据表中了,同时也没有了主从键了。

比如以前这样的查询:

1 SELECT  sp.FirstName, sp.LastName, sp.HireDate
2 FROM  SalesPerson sp
3 INNER   JOIN  Employee e  ON  sp.SalesPersonID  =  e.EmployeeID
4 INNER   JOIN  Contact c  ON  e.EmployeeID  =  c.ContactID
5 WHERE  e.SalariedFlag  =   1   AND  e.HireDate  >=   ' 2006-01-01 '
6

现在只需写成:

1 SELECT  sp.FirstName, sp.LastName, sp.HireDate
2 FROM  SalesPeople  AS  sp
3 WHERE  sp.HireDate  >=   ' 2006-01-01 '



更多关于ADO.NET Entity Framework相关的介绍, 英文好的朋友可以参阅:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/ADONET_EDM.asp
以及
http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnvs05/html/ADONETEnFrmOvw.asp

分享到:
评论

相关推荐

    ADO.NET Entity Framework

    ADO.NET Entity Framework 是微软开发的一种ORM(对象关系映射)框架,它允许开发者使用.NET语言(如C#或VB.NET)来操作数据库,而无需直接编写SQL语句。这个框架的核心概念是实体数据模型(Entity Data Model,EDM...

    ADO.NET EntityFramework 完整版教程(从初级到高级)

    ### ADO.NET Entity Framework 教程知识点概览 #### 一、Entity Framework 概述 - **背景**:Entity Framework (EF) 是 Microsoft 推出的一款 ORM (Object Relational Mapping) 工具,旨在简化数据访问层的开发,...

    ado.net entity framework extension

    ADO.NET Entity Framework(简称EF)是微软推出的一种对象关系映射(ORM)框架,它允许开发者使用.NET语言(如C#或VB.NET)来操作数据库,而无需编写大量的SQL语句。这个“ado.net entity framework extension”指的...

    ADO.NET sql、LINQ to sql、ADO.NET Entity Framework(EF)数据库连接性能比较

    本文将深入探讨三种常见的.NET框架下的数据库访问技术:ADO.NET SQL、LINQ to SQL以及ADO.NET Entity Framework(EF),并重点分析它们在数据库连接性能上的差异,特别是在插入和读取操作,包括模糊检索方面的表现。...

    ADO.NET Entity Framework使用封装示范代码

    ADO.NET Entity Framework(简称EF)是微软提供的一款强大的数据访问框架,它使得开发者能够以对象关系映射(ORM)的方式操作数据库,极大地简化了数据库编程。在这个"ADO.NET Entity Framework使用封装示范代码"中...

    ADO.NET Entity Framework 的分页类代码.rar

    标题“ADO.NET Entity Framework 的分页类代码.rar”表明这是一个与ADO.NET Entity Framework相关的项目,重点在于实现数据库数据的分页功能。Entity Framework是Microsoft开发的一个对象关系映射(ORM)框架,它...

    ADO.NET Entity Framework 增删改查

    实体框架 EntityFramework 使用概念层、映射层和逻辑层将逻辑数据库结构抽象化。 什么是 ADO.NET Entity Framework? ADO.NET Entity Framework 是一种实体框架,它提供了一种新的数据访问方式,允许开发人员使用...

    ADO.NET Entity Framework4.1

    ADO.NET Entity Framework 4.1 是微软开发的一个强大的对象关系映射(ORM)框架,它构建在 ADO.NET 之上,旨在简化数据库应用程序的开发。这个框架允许开发人员使用面向对象的编程方式来操作数据库,而无需直接编写...

    ADO.NET Entity Framework概述

    ADO.NET Entity Framework概述PPT讲解,已经学习,好东西、分享

    Ado.Net Entity Framework+WCF的一个Demo

    Ado.Net Entity Framework 和 WCF(Windows Communication Foundation)是.NET框架中的两个重要组件,它们分别在数据访问和分布式服务方面发挥着关键作用。本Demo旨在展示如何将这两者结合使用,构建一个完整的应用...

    ADO.NET Entity Framework 开发实践

    ### ADO.NET Entity Framework 开发实践 #### 一、ADO.NET Entity Framework 概览 **ADO.NET Entity Framework**(简称 EF)是微软提供的一种用于 .NET 应用程序的数据访问技术,它支持开发者通过面向对象的方式来...

    ADO.NET Entityframework 書籍

    #### 标题理解:“ADO.NET Entityframework 書籍” 本书籍主要介绍了ADO.NET与Entity Framework的核心概念、技术细节及其在现代软件开发中的应用。其中特别强调了DbContext作为Entity Framework的一个关键组件,在...

    ADO.NET EntityFramework入门教程

    ADO.NET EntityFramework入门教程,分别讲解Storage Provider ,Mapping Layer ,Object Services,LINQ to Entities 四层如何设计使用

    Using ADO.NET Entity Framework in Domain-Driven

    ADO.NET Entity Framework Domain-Driven

    ado.net entity framework 电子书

    最近ado.net entity framework 电子书,入门学习的最佳书籍

    ado.net entity framework实例

    ADO.NET Entity Framework是一个强大的数据访问框架,它允许开发者以对象关系映射(ORM)的方式处理数据库,从而减少了对SQL语句的直接依赖。这个实例涵盖了Entity Framework与SQL Server的集成,帮助我们理解如何...

    ado.net entity framework 进阶书

    ### ADO.NET Entity Framework 进阶知识点解析 #### 一、ADO.NET Entity Framework 概述 ADO.NET Entity Framework(简称 EF)是微软提供的一种对象关系映射(Object-Relational Mapping,ORM)框架,它允许开发者...

    ADO.NET Entity Framework 入门示例向导

    ADO.NET Entity Framework 是微软开发的一款强大的ORM(对象关系映射)框架,用于简化数据库操作,使得开发者无需直接编写SQL语句即可与数据库进行交互。它将数据库中的表、视图等对象映射为C#或VB.NET中的实体类,...

    Microsoft ADO.NET Entity Framework Step by Step

    Microsoft ADO.NET Entity Framework Step by Step

Global site tag (gtag.js) - Google Analytics