ADO.NET Entity Framework使用实体数据
2010-12-10 16:05
603 查看
实体框架 将一组概念性架构和存储架构连同它们之间的映射一起编译为称为“客户端视图”的双向 Entity SQL 语句对。这些视图驱动运行时引擎中的查询和更新处理。可以在设计时或运行时(在对 实体数据模型 (EDM) 架构第一次执行查询时)调用生成视图的映射编译器。
实体框架 通过提供到基础数据提供程序和关系数据库的 EntityConnection,建立在特定于存储的 ADO.NET 数据提供程序的基础之上。
执行查询时,查询将被解析并转换为规范命令目录树,规范命令目录树是查询的对象模型表示形式。规范命令目录树表示选择、更新、插入和删除命令。所有后续处理将在命令目录树上执行,命令目录树是 System.Data.EntityClient 提供程序和基础 .NET Framework 数据提供程序(如 System.Data.SqlClient)的通信途经。
下图演示用于访问数据的 Entity Framework 体系结构:
在概念性模型中,实体通过关联来相互相关。在对象层,这些关联由基于实体引用公开相关对象集合的属性来表示。例如,在 School 模型中,Department.Course 基于 Course 和 Department 之间的关联来获取 Course 对象的实体集合。由于被引用的对象不会自动加载,因此必须对实体引用调用 Load 方法来将相关对象数据加载到对象上下文中。还可以指定查询路径,查询路径定义要与返回的对象一起加载哪些相关对象。有关更多信息,请参见以对象形式查询数据(实体框架)。
下面摘自快速入门的示例演示了一个查询,该查询在执行时将检索所有 Department 对象。查询路径定义确保了与 Department 对象相关的 Course 对象也将同时返回。Entity SQL WHERE 子句按 Name 对返回的对象进行排序。
有关更多信息,请参见以对象形式查询数据(实体框架)。
可以定义一个 EDM,使之使用存储过程对数据源执行查询。从这些存储过程得到的结果集将映射到概念性模型中的实体。有关更多信息,请参见存储过程支持(实体框架)。
下面的示例摘自快速入门,它获取与 Department 对象相关的 Course 对象的集合,并将该集合绑定到 DataGridView 控件。
Entity Framework 跟踪实体数据的更改,并使您能将更改持久保存回数据源。在下面摘自快速入门的示例中,对象上下文中的更改将写入数据库。
有关更多信息,请参见添加、修改和删除对象(实体框架)。
可以定义一个 EDM,使之使用存储过程在数据源中插入、更新和删除数据。这些存储过程将映射到概念性模型中的实体。有关更多信息,请参见存储过程支持(实体框架)。
实体数据模型类型
实体数据模型关系
应用程序方案(实体框架)
实体框架 通过提供到基础数据提供程序和关系数据库的 EntityConnection,建立在特定于存储的 ADO.NET 数据提供程序的基础之上。
执行查询时,查询将被解析并转换为规范命令目录树,规范命令目录树是查询的对象模型表示形式。规范命令目录树表示选择、更新、插入和删除命令。所有后续处理将在命令目录树上执行,命令目录树是 System.Data.EntityClient 提供程序和基础 .NET Framework 数据提供程序(如 System.Data.SqlClient)的通信途经。
下图演示用于访问数据的 Entity Framework 体系结构:
查询对象
实体框架 工具生成从 ObjectContext 派生的类,ObjectContext 表示概念性模型中定义的实体容器。ObjectContext 类支持将实体作为对象返回的对 EDM 的查询,也支持创建、更新和删除实体对象。实体框架 支持对 EDM 的对象查询。可以使用 Entity SQL、语言集成查询 (LINQ) 和对象查询生成器方法来编写查询。在概念性模型中,实体通过关联来相互相关。在对象层,这些关联由基于实体引用公开相关对象集合的属性来表示。例如,在 School 模型中,Department.Course 基于 Course 和 Department 之间的关联来获取 Course 对象的实体集合。由于被引用的对象不会自动加载,因此必须对实体引用调用 Load 方法来将相关对象数据加载到对象上下文中。还可以指定查询路径,查询路径定义要与返回的对象一起加载哪些相关对象。有关更多信息,请参见以对象形式查询数据(实体框架)。
下面摘自快速入门的示例演示了一个查询,该查询在执行时将检索所有 Department 对象。查询路径定义确保了与 Department 对象相关的 Course 对象也将同时返回。Entity SQL WHERE 子句按 Name 对返回的对象进行排序。
Visual Basic | 复制代码 |
---|---|
' Define a query that returns all Department objects and related ' Course objects, ordered by name. Dim departmentQuery As ObjectQuery(Of Department) = _ schoolContext.Department.Include("Course").OrderBy("it.Name") |
C# | 复制代码 |
---|---|
// Define a query that returns all Department objects and related // Course objects, ordered by name. ObjectQuery<Department> departmentQuery = schoolContext.Department.Include("Course").OrderBy("it.Name"); |
可以定义一个 EDM,使之使用存储过程对数据源执行查询。从这些存储过程得到的结果集将映射到概念性模型中的实体。有关更多信息,请参见存储过程支持(实体框架)。
使用对象
对象上下文中的对象是数据源中的数据的实体类型表示形式。可以修改、创建和删除对象上下文中的对象。对象上下文管理标识以及各对象之间的关系。还可以序列化对象以及将对象绑定到控件。有关更多信息,请参见使用对象(实体框架)。下面的示例摘自快速入门,它获取与 Department 对象相关的 Course 对象的集合,并将该集合绑定到 DataGridView 控件。
Visual Basic | 复制代码 |
---|---|
' Get the object for the selected department. Dim department As Department = _ CType(Me.departmentList.SelectedItem, Department) ' Bind the grid view to the collection of Course objects ' that are related to the selected Department object. courseGridView.DataSource = department.Course |
C# | 复制代码 |
---|---|
// Get the object for the selected department. Department department = (Department)this.departmentList.SelectedItem; // Bind the grid view to the collection of Course objects // that are related to the selected Department object. courseGridView.DataSource = department.Course; |
Visual Basic | 复制代码 |
---|---|
' Save object changes to the database, display a message, ' and refresh the form. numChanges = schoolContext.SaveChanges() |
C# | 复制代码 |
---|---|
// Save object changes to the database, display a message, // and refresh the form. numChanges = schoolContext.SaveChanges(); |
可以定义一个 EDM,使之使用存储过程在数据源中插入、更新和删除数据。这些存储过程将映射到概念性模型中的实体。有关更多信息,请参见存储过程支持(实体框架)。
另请参见
概念
LINQ to Entities 示例实体数据模型类型
实体数据模型关系
其他资源
对象服务(实体框架)应用程序方案(实体框架)
相关文章推荐
- ADO.NET Entity Framework 使用实体数据模型工具
- 在使用 ADO.NET Entity Framework 时生成的实体类个数少于数据表个数的几种情况及原因分析
- ADO.NET Entity Framework如何:使用实体数据模型向导(实体框架)
- 使用ADO.NET Entity Framework的实体作为数据源Data Source(附Demo程序下载)- 系列3
- ADO.NET Entity framework 中 实体的对应数据库中text类型的问题 (更新) :asp.net entity 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 3 ("@0"): 数据类型 0
- ADO.NET Entity Framework定义高级数据模型(实体框架任务)
- ADO.NET Entity Framework如何:使用存储过程定义模型(实体框架)
- [转载]使用ADO.NET EntityFramework实体模型类
- ADO.NET Entity Framework 使用数据定义语言(实体框架)
- Flex AS3与 ADO.NET Entity Framework 实体对象数据类型转换(转)
- 使用ADO.NET Entity Framework的实体作为数据源Data Source(附Demo程序下载)- 系列3
- ado.net entity framework使用不同的方法查询数据的不同性能
- ADO.NET Entity Framework生成 School 实体数据模型(实体框架快速入门)
- 使用ADO.NET Entity Framework的实体作为数据源Data Source(附Demo程序下载)- 系列3
- ADO.NET Entity Framework 如何:自定义建模和映射文件以使用自定义对象(实体框架)
- ADO.NET Entity Framework生成实体数据模型
- ADO.NET Entity Framework插入和更新数据(实体框架快速入门)
- ADO.NET Entity Framework 定义高级数据模型(实体框架任务)
- ADO.NET Entity Framework 如何:使用存储过程定义模型(实体框架)
- ADO.NET Entity Framework (实体模型框架) 一些使用的注意事项