随笔分类 -  ADO.NET Entity Framework(实体框架)

ADO.NET 实体框架 设计用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储架构编程)来创建数据访问应用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。Entity Framework 应用程序有以下优点: 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。 多个概念性模型可以映射到同一个存储架构。 语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。
摘要:实体框架支持多种将概念模型映射到关系数据的方式。有关更多信息,请参见 建模和映射(实体框架)。 实体框架当前支持以下映射方案。映射方案说明简单映射在此映射方案中,概念模型中的每个实体都映射到存储模型中的单个表。这是实体数据模型工具所生成的默认映射。有关更多信息,请参见 快速入门(实体框架)。 实体拆分在此映射方案中,概念模型中单个实体的属性映射到两个或更多基础表中的列。在此方案中,表必须共享公共主键。有关更多信息,请参见 演练:将一个实体映射到多个表(实体数据模型工具)和 如何:定义单个实体映射到两个表的模型。 概念模型中的水平分区在此映射方案中,概念模型中具有相同属性的多个实体类型映射到同一 阅读全文
posted @ 2010-12-29 18:12 子福当自强 阅读(424) 评论(0) 推荐(0)
摘要:映射规范语言 (MSL) 是一种基于 XML 的语言,它描述了实体框架应用程序的概念模型与存储模型之间的映射。在实体框架应用程序中,映射元数据是在生成时从 .msl 文件(以 MSL 编写)加载的。实体框架在运行时使用映射元数据将对概念模型的查询转换为存储特定的命令。 说明:实体数据模型设计器(实体设计器)在设计时将映射信息存储在 .edmx 文件中。 在生成时,实体设计器使用 .edmx 文件中的信息创建实体框架在运行时需要的 .msl 文件。有关更多信息,请参见 .edmx 文件概述。 MSL 中引用的所有概念模型类型或存储模型类型的名称必须由其各自的命名空间名称限定。有关概念模型命名空间 阅读全文
posted @ 2010-12-29 18:10 子福当自强 阅读(328) 评论(0) 推荐(0)
摘要:概念架构定义语言 (CSDL) 是一种基于 XML 的语言,它描述构成数据驱动应用程序的概念模型的实体、关系和函数。此概念模型可以由实体框架或 ADO.NET Data Services 使用。实体框架使用以 CSDL 描述的元数据将在概念模型中定义的实体和关系映射到数据源。有关更多信息,请参见 SSDL 规范和 MSL 规范。 CSDL 是实体框架对于 实体数据模型的实现。 在实体框架应用程序中,概念模型元数据从 .csdl 文件(用 CSDL 编写)加载到 System.Data.Metadata.Edm ..::..EdmItemCollection 的实例中,并可以使用 System. 阅读全文
posted @ 2010-12-29 18:06 子福当自强 阅读(290) 评论(0) 推荐(0)
摘要:存储架构定义语言 (SSDL) 是一种基于 XML 的语言,用于描述实体框架应用程序的存储模型。在实体框架应用程序中,存储模型元数据从 .ssdl 文件(用 SSDL 编写)加载到 System.Data.Metadata.Edm ..::..StoreItemCollection 的实例中,并且可以使用 System.Data.Metadata.Edm ..::..MetadataWorkspace 类中的方法进行访问。 实体框架使用存储模型元数据将针对概念模型的查询转换为特定于存储的命令。 说明:实体数据模型设计器(实体设计器)在设计时将存储模型信息存储在 .edmx 文件中。 在生成时, 阅读全文
posted @ 2010-12-29 18:06 子福当自强 阅读(254) 评论(0) 推荐(0)
摘要:概念架构定义语言 (CSDL)、存储架构定义语言 (SSDL) 和映射规范语言 (MSL) 都是基于 XML 的语言,它们分别描述概念模型、存储模型和这些模型之间的映射。在实体框架应用程序中,模型和映射元数据加载自三个文件扩展名分别为 .csdl、.ssdl 和 .msl 的文件。.csdl 和 .ssdl 文件中包含的元数据加载到 System.Data.Metadata.Edm ..::..EdmItemCollection 和 System.Data.Metadata.Edm ..::..StoreItemCollection 类的实例中,可使用 System.Data.Metadata 阅读全文
posted @ 2010-12-29 18:05 子福当自强 阅读(523) 评论(0) 推荐(0)
摘要:本主题介绍如何手动创建一个概念模型,其中将一个实体类型映射到基础数据库中的两个表。可以使用相同的概念将一个实体类型映射到两个以上的表。 说明:建议使用 ADO.NET 实体数据模型工具来定义实体类型映射到多个表的模型。 有关更多信息,请参见 演练:将一个实体映射到多个表(实体数据模型工具)。 只有在满足以下条件的情况下,才应将一个实体类型映射到多个表:要映射的多个表共享一个公共键。所映射的实体类型在每个基础表中有对应的项。换言之,该实体类型表示的数据在两个表之间具有一对一的对应关系;该实体类型表示两个表的内部联接。以下是手动定义一个实体映射到两个表的模型的基本步骤:定义一个实体类型,该类型的属 阅读全文
posted @ 2010-12-29 18:04 子福当自强 阅读(418) 评论(1) 推荐(0)
摘要:本主题描述如何创建每种类型多个实体集 (MEST) 的概念模型。通过为每种类型定义多个实体集 (MEST),可以在基础数据库中的多个表具有相同结构时简化代码。当使用的实体类型与其他类型没有关联时,定义一个 MEST 模型很简单。但是,若要为与其他类型存在关联的实体类型定义一个 MEST 模型,则必须为对象图中的每个类型实现 MEST。有关更多信息,请参见 MEST - 什么是 MEST 以及 MEST 如何工作?(可能为英文网页)本主题介绍如何为与其他类型没有关联的实体类型定义一个 MEST。 请注意,仅当基础数据库表具有相同结构时才应实现 MEST。定义 MEST 模型的基本步骤如下:使用 阅读全文
posted @ 2010-12-29 18:03 子福当自强 阅读(224) 评论(0) 推荐(0)
摘要:本主题介绍如何手动创建具有每个层次结构一个表继承的概念模型。每个层次结构一个表继承使用一个数据库表来维护继承层次结构中的所有实体类型的数据。 说明:建议使用 ADO.NET 实体数据模型工具来定义具有每种类型一个表继承的模型。 有关更多信息,请参见 演练:映射继承 - 每个层次结构一个表(实体数据模型工具)。 以下是手动定义一个具有每个层次结构一个表继承的模型的基本步骤:在将包含基实体类型和派生类型的概念模型中定义一个实体集。有关更多信息,请参见 EntitySet 元素 (CSDL)。 通过使用 BaseType 特性在概念模型中定义派生实体类型,并且只定义派生类型上的非继承属性。 有关更多 阅读全文
posted @ 2010-12-29 18:02 子福当自强 阅读(302) 评论(0) 推荐(0)
摘要:本主题介绍如何手动创建具有每种类型一个表继承层次结构的概念模型。每种类型一个表继承使用数据库中单独的表为继承层次结构中的每种类型维护非继承属性和键属性的数据。 说明:建议使用 ADO.NET 实体数据模型工具来定义具有每种类型一个表继承的模型。 有关更多信息,请参见 演练:映射继承 - 每种类型一个表(实体数据模型工具)。 以下是手动定义一个具有每种类型一个表继承的模型的基本步骤:在将包含基实体类型和派生类型的概念模型中定义一个实体集。有关更多信息,请参见 EntitySet 元素 (CSDL)。 通过使用 BaseType 特性在概念模型中定义派生实体类型,并且只定义派生类型上的非继承属性。 阅读全文
posted @ 2010-12-29 18:01 子福当自强 阅读(245) 评论(0) 推荐(0)
摘要:使用实体框架可以指定要在修改实体数据时使用的存储过程。这些存储过程取代了实体框架所生成的方法。存储过程是隐式调用的,因此不需要更改概念架构或现有应用程序代码中定义的数据模型。 说明:建议使用 ADO.NET 实体数据模型工具来指定用于修改实体数据的存储过程。有关更多信息,请参见 演练:将一个实体映射到存储过程(实体数据模型工具)和 如何:将修改函数映射到存储过程(实体数据模型工具)。 本主题演示如何为 Adventure Works 销售模型中的 SalesOrderDetail 实体类型定义修改存储过程。 若要使用此示例,必须已将 AdventureWorks 销售模型添加到您的项目中,并将 阅读全文
posted @ 2010-12-29 13:58 子福当自强 阅读(277) 评论(0) 推荐(0)
摘要:可以通过以下两种方式在概念模型中公开数据库中定义的存储过程:可以在概念模型中创建映射到存储过程的函数导入。这将允许您针对 ObjectContext 定义一个执行数据库中的存储过程的方法。 根据存储过程的定义方式不同,对应的函数导入可以返回实体类型,也可以返回复杂类型。可以将实体类型的插入、更新和删除操作映射到存储过程。这样,您可以为实体类型定义自定义的插入、更新和删除行为。 说明:如果没有将实体类型的插入、更新和删除这三种操作全部映射到存储过程,则在运行时执行的情况下未映射的操作将失败且会引发 UpdateException。 本主题介绍如何在概念模型中创建映射到数据库中的存储过程的函数导入 阅读全文
posted @ 2010-12-29 13:49 子福当自强 阅读(406) 评论(0) 推荐(0)
摘要:本节中包含的主题演示如何实现比概念和存储类型之间简单的一对一映射更高级的模型。本节内容如何:使用存储过程定义模型(实体框架)如何:定义具有修改存储过程的模型(实体框架)如何:通过每种类型一个表继承以定义模型(实体框架)如何:通过每个层次结构一个表继承以定义模型(实体框架)如何:通过每种类型多个实体集定义模型(实体框架)请参见其他资源示例(实体框架)建模和映射(实体框架) 阅读全文
posted @ 2010-12-29 13:48 子福当自强 阅读(177) 评论(0) 推荐(0)
摘要:在实体框架中,可以采用最适合您应用程序的方式定义概念模型、存储模型以及这两种模型之间的映射。使用 Visual Studio 中的实体数据模型工具,可以从数据库或图形模型创建一个 . edmx 文件,然后在数据库或模型发生更改时更新该文件。 随 .NET Framework 一起提供的 EDM 生成器可从现有数据库源生成 .csdl、.ssdl 和 .msl 文件。也可以手动创建模型和映射内容。本节中的主题介绍如何在实体框架中定义建模和映射文件。研读有关数据建模和实体框架的内容。 定义高级数据模型(实体框架任务)CSDL、SSDL 和 MSL 规范生成模型和映射将概念模型映射到存储模型定义概念 阅读全文
posted @ 2010-12-29 13:33 子福当自强 阅读(324) 评论(0) 推荐(0)
摘要:如果在 Visual Studio 项目中使用实体数据模型向导,该向导将自动生成 .edmx 文件并将该项目配置为使用实体框架。有关更多信息,请参见 如何:使用实体数据模型向导(实体框架)。 也可以手动将 Visual Studio 项目配置为使用实体框架。如果手动定义了模型和映射文件或使用 EDM 生成器 (EdmGen.exe) 实用工具定义了它们,则需要这样做。 本主题中的示例使用 AdventureWorks 销售模型的模型和映射文件。 AdventureWorks 销售模型将在实体框架文档的与任务相关的所有主题中使用。将 Visual Studio 项目配置为使用 Adventure 阅读全文
posted @ 2010-12-29 13:31 子福当自强 阅读(419) 评论(0) 推荐(0)
摘要:本主题演示如何使用实体数据模型向导来生成 AdventureWorks 销售 .edmx 文件以及将 Visual Studio 项目配置为使用实体框架。 此模型和配置将在任务相关的各个实体框架主题中使用。实体数据模型 向导从 Visual Studio 2008 Service Pack 1 (SP1) 开始成为 Visual Studio 的一个组件。有关更多信息,请参见 实体数据模型向导。 可以手动创建模型和映射文件并将项目配置为使用实体框架,而不使用实体数据模型向导。有关更多信息,请参见 如何:手动定义模型和映射文件(实体框架)和 如何:手动配置实体框架项目。 添加 ADO.NET 实 阅读全文
posted @ 2010-12-29 13:29 子福当自强 阅读(397) 评论(0) 推荐(0)
摘要:本节的主题介绍如何配置 Visual Studio 项目以使用 ADO.NET 实体框架,包括添加项目引用、定义连接字符串以及定义概念模型。本节内容如何:使用实体数据模型向导(实体框架)如何:手动配置实体框架项目相关章节实体框架快速入门如何:创建新的 .edmx 文件(实体数据模型工具)请参见其他资源建模和映射(实体框架)入门(实体框架) 阅读全文
posted @ 2010-12-29 13:15 子福当自强 阅读(245) 评论(0) 推荐(0)
摘要:这是 实体框架快速入门的最后一项任务。 在此任务中,您将对与 DataGridView 控件绑定的 Course 对象所做的更改保存到数据库中。 还将运行已完成的 Course Manager 应用程序。保存对对象所做的更改在 “工具箱”中,展开 “公共控件”,将 “按钮”控件拖到 CourseViewer 窗体设计器,将控件的名称更改为 saveChanges,并将 Text 值更改为 Update。 在 CourseViewer 窗体设计器中,双击 saveChanges 控件。 此时将创建 saveChanges_Click 事件处理程序方法。 粘贴以下代码,这些代码将对象更改保存到数据 阅读全文
posted @ 2010-12-29 11:40 子福当自强 阅读(751) 评论(0) 推荐(0)
摘要:在本任务中,您将针对在 School 模型中表示实体和关联的 CLR 对象创建强类型查询,并将显示控件绑定到从这些查询中返回的对象集合。在 School 数据库中查询系在 CourseViewer 窗体的代码文件的开始处,添加以下 using (C#) 或 Imports (Visual Basic) 语句,以引用从 School 数据库和实体命名空间中创建的模型。 using System.Data.Objects; using System.Data.Objects.DataClasses;在 CourseViewer 窗体的分部类定义的顶部,添加以下用于创建 ObjectContext 阅读全文
posted @ 2010-12-29 11:31 子福当自强 阅读(504) 评论(0) 推荐(0)
摘要:在此任务中,您将学习使用实体数据模型向导来生成实体数据模型 (EDM)。此 EDM 为 School 模型定义一组 1:1 实体到表映射文件。School 模型将用于整个实体框架入门文档中。添加 ADO.NET 实体数据模型项模板在“解决方案资源管理器”中选择 CourseManager 项目,右键单击,指向“添加”,然后单击“新建项”。在“模板”窗格中,选择“ADO.NET 实体数据模型”。为模型名称键入 School.edmx,然后单击“添加”。将显示“实体数据模型向导”的开始页。生成 EDM在“选择模型内容”对话框中,选择“从数据库生成”。然后,单击“下一步”。单击“新建连接”按钮。在“ 阅读全文
posted @ 2010-12-10 17:31 子福当自强 阅读(534) 评论(0) 推荐(0)
摘要:在本任务中,您将使用 Visual Studio 2008 创建 Windows 应用程序 Course Manager。使用 Visual Studio 创建 Course Manager 应用程序在“文件”菜单上单击“新建项目”。在“项目类型”窗格中,选择“Visual Basic”或“Visual C#”。在“模板”窗格中,选择“Windows 窗体应用程序”。对于项目名称输入 CourseManager,然后单击“确定”。创建 Course Viewer 窗体在 CourseManager 项目中,选择默认窗体 (Form1)。在“文件属性”窗格中,将“文件名”更改为 CourseVi 阅读全文
posted @ 2010-12-10 16:32 子福当自强 阅读(390) 评论(0) 推荐(0)

悟道