摘要:
ObjectQuery (Of ('T )) 泛型类表示一个查询,该查询可以返回零个或零个以上类型化对象的集合。 ObjectQuery (Of ('T )) 属于包含编写和执行查询所必需的连接和元数据信息的 ObjectContext。 可以使用 new 运算符构造 ObjectQuery (Of ('T )),并将查询字符串和对象上下文传递到该构造函数。 但是,更通用的方案是使用 ObjectContext 派生类的属性获取表示实体集的集合的 ObjectQuery (Of ('T )) 实例。 通常,通过由实体框架工具生成的类或通过 POC 阅读全文
摘要:
使用 ADO.NET 实体框架可以查询概念模型。实体框架支持针对概念模型执行以下类型的查询:查询类型说明语言集成查询 (LINQ)通过 LINQ to Entities,可以使用语言特定的查询运算符对实体数据执行 LINQ 查询。有关更多信息,请参见 LINQ to Entities。 Entity SQLEntity SQL 是类似于 SQL 的与存储无关的查询语言。通过 Entity SQL,可以将实体数据作为对象或以表格形式进行查询。在以下情况下,应考虑使用 Entity SQL:当查询必须在运行时动态构造时。在这种情况下,还应考虑使用 ObjectQuery (Of ('T ) 阅读全文
摘要:
从 .NET Framework 版本 4 开始,实体框架支持数据定义语言 (DDL)。这样,您将能够基于连接字符串和存储元数据 (SSDL) 模型创建或删除数据库实例。ObjectContext 的以下方法使用连接字符串和 SSDL 内容来完成以下操作:创建或删除数据库,检查数据库是否存在,以及查看生成的 DDL 脚本: CreateDatabaseDeleteDatabaseDatabaseExistsCreateDatabaseScript 说明:假定有足够的权限可执行 DDL 命令。以上列出的方法将大部分工作都委托给基础 ADO.NET 数据提供程序。该提供程序负责确保用于生成数据库对 阅读全文
摘要:
本主题介绍如何手动创建一个概念模型,其中将一个实体类型映射到基础数据库中的两个表。可以使用相同的概念将一个实体类型映射到两个以上的表。 说明:建议使用 ADO.NET 实体数据模型工具来定义实体类型映射到多个表的模型。 有关更多信息,请参见 演练:将一个实体映射到多个表(实体数据模型工具)。 只有在满足以下条件的情况下,才应将一个实体类型映射到多个表:要映射的多个表共享一个公共键。所映射的实体类型在每个基础表中有对应的项。换言之,该实体类型表示的数据在两个表之间具有一对一的对应关系;该实体类型表示两个表的内部联接。以下是手动定义一个实体映射到两个表的模型的基本步骤:定义一个实体类型,该类型的属 阅读全文
摘要:
本主题描述如何创建每种类型多个实体集 (MEST) 的概念模型。通过为每种类型定义多个实体集 (MEST),可以在基础数据库中的多个表具有相同结构时简化代码。当使用的实体类型与其他类型没有关联时,定义一个 MEST 模型很简单。但是,若要为与其他类型存在关联的实体类型定义一个 MEST 模型,则必须为对象图中的每个类型实现 MEST。有关更多信息,请参见 MEST - 什么是 MEST 以及 MEST 如何工作?(可能为英文网页)本主题介绍如何为与其他类型没有关联的实体类型定义一个 MEST。 请注意,仅当基础数据库表具有相同结构时才应实现 MEST。定义 MEST 模型的基本步骤如下:使用 阅读全文
摘要:
本主题介绍如何手动创建具有每个层次结构一个表继承的概念模型。每个层次结构一个表继承使用一个数据库表来维护继承层次结构中的所有实体类型的数据。 说明:建议使用 ADO.NET 实体数据模型工具来定义具有每种类型一个表继承的模型。 有关更多信息,请参见 演练:映射继承 - 每个层次结构一个表(实体数据模型工具)。 以下是手动定义一个具有每个层次结构一个表继承的模型的基本步骤:在将包含基实体类型和派生类型的概念模型中定义一个实体集。有关更多信息,请参见 EntitySet 元素 (CSDL)。 通过使用 BaseType 特性在概念模型中定义派生实体类型,并且只定义派生类型上的非继承属性。 有关更多 阅读全文
摘要:
本主题介绍如何手动创建具有每种类型一个表继承层次结构的概念模型。每种类型一个表继承使用数据库中单独的表为继承层次结构中的每种类型维护非继承属性和键属性的数据。 说明:建议使用 ADO.NET 实体数据模型工具来定义具有每种类型一个表继承的模型。 有关更多信息,请参见 演练:映射继承 - 每种类型一个表(实体数据模型工具)。 以下是手动定义一个具有每种类型一个表继承的模型的基本步骤:在将包含基实体类型和派生类型的概念模型中定义一个实体集。有关更多信息,请参见 EntitySet 元素 (CSDL)。 通过使用 BaseType 特性在概念模型中定义派生实体类型,并且只定义派生类型上的非继承属性。 阅读全文
摘要:
使用实体框架可以指定要在修改实体数据时使用的存储过程。这些存储过程取代了实体框架所生成的方法。存储过程是隐式调用的,因此不需要更改概念架构或现有应用程序代码中定义的数据模型。 说明:建议使用 ADO.NET 实体数据模型工具来指定用于修改实体数据的存储过程。有关更多信息,请参见 演练:将一个实体映射到存储过程(实体数据模型工具)和 如何:将修改函数映射到存储过程(实体数据模型工具)。 本主题演示如何为 Adventure Works 销售模型中的 SalesOrderDetail 实体类型定义修改存储过程。 若要使用此示例,必须已将 AdventureWorks 销售模型添加到您的项目中,并将 阅读全文
摘要:
本节中包含的主题演示如何实现比概念和存储类型之间简单的一对一映射更高级的模型。本节内容如何:使用存储过程定义模型(实体框架)如何:定义具有修改存储过程的模型(实体框架)如何:通过每种类型一个表继承以定义模型(实体框架)如何:通过每个层次结构一个表继承以定义模型(实体框架)如何:通过每种类型多个实体集定义模型(实体框架)请参见其他资源示例(实体框架)建模和映射(实体框架) 阅读全文
摘要:
可以通过以下两种方式在概念模型中公开数据库中定义的存储过程:可以在概念模型中创建映射到存储过程的函数导入。这将允许您针对 ObjectContext 定义一个执行数据库中的存储过程的方法。 根据存储过程的定义方式不同,对应的函数导入可以返回实体类型,也可以返回复杂类型。可以将实体类型的插入、更新和删除操作映射到存储过程。这样,您可以为实体类型定义自定义的插入、更新和删除行为。 说明:如果没有将实体类型的插入、更新和删除这三种操作全部映射到存储过程,则在运行时执行的情况下未映射的操作将失败且会引发 UpdateException。 本主题介绍如何在概念模型中创建映射到数据库中的存储过程的函数导入 阅读全文
摘要:
若要将自定义数据类用于实体框架,您必须将在概念模型中定义的实体类型和属性匹配到自定义数据类。当您使用实体数据模型工具从数据库中生成模型和映射内容时,概念模型中的实体类型和实体集将与数据库中的表匹配。若要更新模型和映射内容以与自定义数据类匹配,必须执行以下步骤:更新概念模型内容(此内容在概念架构定义语言 (CSDL) 中定义)以匹配自定义数据类。如果需要,则更新存储模型内容(此内容在存储架构定义语言 (SSDL) 中定义)。更新映射内容(此内容在映射规范语言 (MSL) 中定义)。验证更新后的模型和映射内容。防止 Visual Studio 生成对象层。 说明:实体数据模型工具还可以生成基于存储 阅读全文
摘要:
此示例基于将 Contact、 SalesOrderHeader 和 SalesOrderDetail 表映射到 Contact、 Orders 和 LineItem 类型的 AdventureWorks 数据模型。 您可以创建一个空模型并在编辑器中编辑该模型,而不是按照定义此模型的步骤(如 如何:自定义建模和映射文件以使用自定义对象(实体框架)中所述)操作。 若要编辑模型,请打开 AdventureWorksModel.edmx 文件并将以下代码复制到 edmx:Runtime 标记之间。 阅读全文
摘要:
主题介绍如何定义在连接到概念模型时使用的连接字符串。本主题基于 AdventureWorks 销售概念模型。 AdventureWorks 销售模型将在实体框架文档的与任务相关的所有主题中使用。本主题假定您已配置实体框架且定义了 AdventureWorks 销售模型。有关更多信息,请参见 如何:手动定义模型和映射文件(实体框架)。 本主题中的过程还包括在 如何:手动配置实体框架项目中。 说明:如果在 Visual Studio 项目中使用实体数据模型向导,则该向导将自动生成 .edmx 文件并将该项目配置为使用实体框架。有关更多信息,请参见 如何:使用实体数据模型向导(实体框架)定义实体框 阅读全文
摘要:
实体框架可用于将模型和映射文件部署为应用程序的嵌入资源。包含嵌入模型和映射文件的程序集必须加载到实体连接所在的应用程序域中。有关更多信息,请参见 连接字符串(实体框架)。 默认情况下,实体数据模型工具嵌入模型和映射文件。手动定义模型和映射文件时,请使用下面的过程以确保文件作为嵌入资源与实体框架应用程序一起部署。 说明:若要维护嵌入资源,每次修改模型和映射文件时都必须重复此过程。嵌入模型和映射文件在 “解决方案资源管理器”中选择概念文件 (.csdl)。 在 “属性”窗格中,将 “生成操作”设置为 “嵌入的资源”。 对存储文件 (.ssdl) 和映射文件 (.msl) 重复步骤 1 和步骤 2。 阅读全文
摘要:
本主题介绍如何手动创建 AdventureWorks 销售模型 模型和映射文件。 如果手动生成模型和映射文件,则仍需要将 Visual Studio 项目配置为使用实体框架。有关更多信息,请参见 如何:手动配置实体框架项目。 说明:如果在 Visual Studio 项目中使用实体数据模型向导,则该向导会自动生成 .edmx 文件并将该项目配置为使用实体框架。有关更多信息,请参见 如何:使用实体数据模型向导(实体框架)。 创建存储架构定义语言 (SSDL) 文件将名为 AdventureWorks.ssdl 的文件添加到您的项目目录中并粘贴以下内容:以带有颜色区分的格式查看复制到剪贴板打印创 阅读全文
摘要:
本主题介绍如何使用 EDM 生成器 (EdmGen.exe) 工具验证模型和映射文件。 有关更多信息,请参见 实体数据模型。 使用 EdmGen.exe 验证 School 模型创建 School 数据库。有关更多信息,请参见 创建 School 示例数据库(实体框架快速入门)。 生成 School 模型。有关更多信息,请参见 如何:使用 EdmGen.exe 生成模型和映射文件。 在命令提示符下执行以下命令(无换行符):以带有颜色区分的格式查看复制到剪贴板打印请参见任务如何:手动配置实体框架项目如何:预生成视图以提高查询性能(实体框架)如何:使用 EdmGen.exe 生成对象层代码其他资源 阅读全文
摘要:
本主题描述如何使用 EDM 生成器 (EdmGen.exe) 工具生成以下文件(基于 School 数据库):概念模型(.csdl 文件)。存储模型(.ssdl 文件)。概念模型与存储模型之间的映射(.msl 文件)。使用 Visual Basic 或 C# 的对象层代码。视图文件。EdmGen.exe 工具使用 /mode:FullGeneration 生成上面列出的文件。有关 EdmGen.exe 命令的更多信息,请参见 EDM 生成器 (EdmGen.exe)。 如果使用 EdmGen.exe 生成模型和映射文件,则仍需要将 Visual Studio 项目配置为使用实体框架。有关更多信 阅读全文
摘要:
本主题介绍如何使用 EDM 生成器 (EdmGen.exe) 工具生成基于 .csdl 文件的对象层代码。 使用 EdmGen.exe 为 Visual Basic 项目的 School 模型生成对象层代码创建 School 数据库。有关更多信息,请参见 创建 School 示例数据库(实体框架快速入门)。 生成 School 模型或获取 School.csdl 文件。有关更多信息,请参见 如何:使用 EdmGen.exe 生成模型和映射文件。 在命令提示符下执行以下命令(无换行符):以带有颜色区分的格式查看复制到剪贴板打印使用 EdmGen.exe 为 C# 项目的 School 模型生成对 阅读全文
摘要:
EdmGen.exe 是用于处理实体框架模型和映射文件的命令行工具。使用 EdmGen.exe 工具可以执行以下任务:使用特定于数据源的 .NET Framework 数据提供程序连接到数据源,生成实体框架使用的概念模型 (.csdl)、存储模型 (.ssdl) 以及映射 (.msl) 文件。有关更多信息,请参见 如何:使用 EdmGen.exe 生成模型和映射文件。 验证现有模型。有关更多信息,请参见 如何:使用 EdmGen.exe 验证模型和映射文件。 生成包含从概念模型 (.csdl) 文件生成的对象类的 C# 或 Visual Basic 代码文件。有关更多信息,请参见 如何:使用 阅读全文
摘要:
ADO.NET 实体数据模型工具可帮助您构建实体框架应用程序。通过实体数据模型工具,您可以从现有数据库创建概念模型,然后以图形方式直观显示和编辑概念模型。或者,您可以首先以图形方式创建概念模型,然后生成支持模型的数据库。无论哪种情况,您都可以在基础数据库更改时自动更新模型,并为应用程序生成对象层代码。 说明:数据库生成和对象层代码生成是可自定义的。有关更多信息,请参见 如何:自定义对象层代码生成(实体数据模型设计器)和 如何:自定义数据库生成(“生成数据库”向导)。 实体数据模型工具使您能够自动修改 .edmx 文件,该文件中包含概念模型、存储模型和映射内容。 有关更多信息,请参见 CSDL、 阅读全文