用于实体框架的 EntityClient 提供程序
EntityClient 提供程序是一种数据提供程序,实体框架应用程序使用该提供程序访问在概念模型中描述的数据。 有关概念模型的信息,请参阅建模和映射。 EntityClient 使用其他 .NET Framework 数据提供程序访问数据源。 例如,EntityClient 在访问 SQL Server 数据库时使用 SQL Server .NET Framework 数据提供程序 (SqlClient)。 有关 SqlClient 提供程序的信息,请参阅用于实体框架的 SqlClient。 EntityClient 提供程序是在 System.Data.EntityClient 命名空间中实现的。
管理连接
通过提供与基础数据提供程序和关系数据库的 EntityConnection,可在特定于存储的 ADO.NET 数据提供程序的基础上构建实体框架。 若要构造 EntityConnection 对象,必须引用包含所需模型和映射的一组元数据,同时还引用特定于存储的数据提供程序名称和连接字符串。 在 EntityConnection 就绪后,即可通过从概念模型生成的类访问实体。
可以在 app.config 文件中指定连接字符串。
System.Data.EntityClient 还包含 EntityConnectionStringBuilder 类。 通过使用此类的属性和方法,开发人员可以使用此类以编程方式创建语法正确的连接字符串,并可以分析和重新生成现有的连接字符串。
创建查询
实体 SQL 语言是一种独立于存储的 SQL 方言,它可直接处理概念实体架构,并支持实体数据模型概念(如继承和关系)。 EntityCommand 类用于对实体模型执行实体 SQL 命令。 构造 EntityCommand 对象时,可以指定一个存储过程名称或查询文本。 实体框架使用存储特定的数据提供程序,将一般实体 SQL 转换为存储特定的查询。 有关编写实体 SQL 查询的详细信息,请参阅实体 SQL 语言。
下面的示例创建 EntityCommand 对象并将实体 SQL 查询文本赋给该对象的 EntityCommand.CommandText 属性。 此实体 SQL 查询从概念模型请求按定价排序的产品。 下面的代码完全不识别存储模型。
EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT VALUE p
FROM AdventureWorksEntities.Product AS p
ORDER BY p.ListPrice";
执行查询
执行查询时,查询将经过解析并转换为规范命令目录树。 所有后续处理都在该命令目录树上执行。 该命令目录树是 System.Data.EntityClient 与基础 .NET Framework 数据提供程序(如 System.Data.SqlClient)之间的通信途径。
EntityDataReader 公开对概念模型执行 EntityCommand 的结果。 若要执行返回 EntityDataReader 的命令,请调用 ExecuteReader。 EntityDataReader 实现 IExtendedDataRecord 以描述丰富结构化的结果。
管理事务
在实体框架中,有两种使用事务的方法:自动和显式。 自动事务使用 System.Transactions 命名空间,而显式事务使用 EntityTransaction 类。
若要更新通过概念模型公开的数据,请参阅如何:管理实体框架中的事务。
本节内容
如何:使用 EntityCommand 执行参数化实体 SQL 查询