ADO.NET Entity Framework 入门示例向导 2

本篇文章在《ADO.NET Entity Framework 入门示例向导(附Demo程序下载)》基础上,进一步演示如何使用EntityClient 新数据提供程序、对象服务(Object Services)和LINQ to Entities与概念模型交互。Entity Framework 使用概念层、映射层和逻辑层将关系数据库结构抽象化。EntityClient和Entity SQL(新语言-实体SQL)可以与概念层的实体数据模型(Entity Data Model - EDM)交互。

如下是Entity Framework 组件图:

EntityFramework_demo2_1

首先,在Class Library 项目中增加ADO.NET Entity Data Model文件,具体请参考《ADO.NET Entity Framework 入门示例向导(附Demo程序下载)》。

下面分别演示如何使EntityClient、对象服务Object Services、LINQ to Entities 访问概念数据模型。

1.使用EntityClient

EntityClient 是新的.NET 数据提供程序,EntityClient使用基于文本的语言Entity SQL与概念模型通信。

EntityClient 中的类与常见的 ADO.NET 提供程序中的类相似。例如,使用 EntityCommand 对象执行 EntityClient 查询,这需要 EntityConnection 对象连接到 EDM。当 EntityClient 与 EDM 中的实体交互时,EntityClient 不返回实体的实例而返回 DbDataReader 对象中的所有结果。EntityClient 可以返回一组标准行和列,也可以通过 DbDataReader 返回更复杂的分层数据的表示形式。

示例代码:

string customerID = txtCustomerID.Text.Trim();

// Contains a reference to an Entity Data Model (EDM) and a data source connection.

using (EntityConnection cn = new EntityConnection("Name=NorthwindEntities"))

            {

                cn.Open();

EntityCommand cmd = cn.CreateCommand();

                cmd.CommandText =

"SELECT VALUE c FROM NorthwindEntities.Customers "+

"AS c WHERE c.CustomerID = @customerID";

                cmd.Parameters.AddWithValue("customerID", customerID);

DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);

while (rdr.Read())

Console.WriteLine(rdr["CompanyName"].ToString());

                rdr.Close();

            }

示例使用 EntityClient 连接到概念模型并检索特定的客户。EntityConnection 可以接受概念层的完整连接字符串或 App.Config 文件中连接字符串的名称。连接字符串包含元数据文件(CSDL、MSL 和 SSDL 文件)列表,以及存储的专用于数据库的连接字符串信息。

如下是示例程序使用的数据库连接串:

<connectionStrings>

    <add name="NorthwindEntities" connectionString=" metadata= res://NorthwindEDM/NorthwindModel.csdl|res://NorthwindEDM/NorthwindModel.ssdl|res://NorthwindEDM/NorthwindModel.msl; provider=System.Data.SqlClient;provider connection string=&quot; Data Source=localhost; Initial Catalog=Northwind;Integrated Security=True; MultipleActiveResultSets=True&quot;"providerName="System.Data.EntityClient" />

</connectionStrings>

2.使用对象服务Object Services

与由 EDM 表示的数据进行交互的另一种方法是使用对象服务Object Services,对象服务允许直接返回对象列表。

下面的示例演示了如何使用对象服务和实体 SQL 进行查询以检索 Customers 列表:

NorthwindEntities northwindContext = new NorthwindEntities();

string customerID = txtCustomerID.Text.Trim();

ObjectQuery<Customers> query = northwindContext.CreateQuery<Customers>(

"SELECT VALUE c FROM Customers AS c WHERE c.CustomerID = @customerID",

new ObjectParameter("customerID", customerID));

foreach (Customers c in query)

Console.WriteLine(c.CustomerID + "---" + c.CompanyName);

在 EDM 中,EntityContainer 由从 ObjectContext(在本示例中为 northwindContext)继承的类表示。ObjectContext 类实施 ObjectQuery<T> 接口,从而使其可以使用实体 SQL 或 LINQ 创建查询。

CreateQuery 方法接受参数化的实体 SQL 语句,该语句定义了将检索 Customers 实体列表的查询。通过使用 foreach 语句对 ObjectQuery<Customers> 进行迭代时将执行作用于数据库的实际 SQL 语句。

3. 使用 LINQ to Entities

上述实体SQL脚本可以通过如下的LINQ to Entities 脚本实现,代码如下:

NorthwindEntities northwindContext = new NorthwindEntities();

string customerID = txtCustomerID.Text.Trim();

var query = from c in northwindContext.Customers

where c.CustomerID == customerID

select c;

foreach (Customers c in query)

Console.WriteLine(c.CustomerID + "---" + c.CompanyName);

本示例程序演示界面如下:

EntityFramework_demo2_2

使用实体框架Entity Framework,开发人员可以通过对象模型(而不是逻辑/关系数据模型)专注于数据。一旦完成 EDM 的设计并将其映射到关系存储后,就可以使用 EntityClient、ObjectServices 和 LINQ 等多种技术与对象交互。

本文是http://forum.entlib.com 开源ASP.NET技术论坛小组,在参考《ADO.NET 实体框架概述》(MSDN Magazine)之上,进行的示例分析、演示。

如有问题或疑问,欢迎到http://forum.entlib.com 技术论坛进行交流。

下载示例代码和项目。

附件:
EntityFrameworkDemo_Part2.rar 176 KB,

转载于:https://www.cnblogs.com/bitstudio/archive/2009/03/30/1425212.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Entity Framework(EF)是微软提供的一种对象关系映射(ORM)框架,用于简化和加速开发者与数据库之间的交互。它允许开发者使用面向对象的方式来操作数据库,而无需直接编写SQL语句。以下是一些与.NET Entity Framework相关的基本知识: 1. 什么是.NET Entity Framework? .NET Entity Framework是一个开源的ORM框架,它允许开发者通过定义实体类和关系来操作数据库。它提供了一个对象关系映射器,可以将数据库表映射到.NET实体类,使开发者可以使用面向对象的思维来操作数据库。 2. Entity Framework有哪些核心组件? Entity Framework包括以下核心组件: - DbContext:表示数据库上下文,用于管理实体对象与数据库之间的交互。 - DbSet:表示数据库中的实体集合,用于查询、插入、更新和删除实体。 - Entity:表示映射到数据库表的实体类。 - LINQ to Entities:用于编写查询语句,将LINQ查询转换为SQL语句并执行。 3. 如何使用Entity Framework进行数据库操作? 使用Entity Framework进行数据库操作通常包括以下步骤: - 定义实体类:创建表示数据库表的实体类。 - 创建DbContext:继承自DbContext的类,表示数据库上下文。 - 配置映射关系:使用Fluent API或属性注解来配置实体类与数据库表之间的映射关系。 - 执行数据库操作:使用DbContext的方法(如SaveChanges、Add、Remove等)来执行对数据库的增删改查操作。 4. Entity Framework支持哪些数据库提供程序? Entity Framework支持多种数据库提供程序,包括SQL Server、MySQL、Oracle、SQLite等。可以根据需要选择合适的数据库提供程序。 5. 如何进行查询操作? 使用Entity Framework可以使用LINQ查询语法或方法链式调用来进行查询操作。通过DbContext的DbSet属性获取实体集合,然后可以使用LINQ查询来过滤、排序和投影数据。 6. 如何进行数据迁移? 数据迁移是Entity Framework提供的一种机制,用于管理数据库结构的变更。可以使用命令行工具或Package Manager Console来创建和应用数据迁移脚本,以保持数据库结构与代码模型的一致性。 .NET Entity Framework是一个功能强大且广泛使用的ORM框架,它简化了与数据库的交互,提高了开发效率。建议深入学习和掌握Entity Framework的各种特性和用法,以便在实际项目中充分发挥其优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值