Entity Data Model (EDM)深入分析, Part 3

EntityClient

实体框架(Entity Framework)在ADO.NET 3.5 提供程序的基础上引入新的 ADO.NET 提供程序 EntityClient。Entity­Client 看上去与之前使用的 ADO.NET 提供程序非常类似,它将提供第一个抽象,可允许开发人员使用标准的 Connection、Command 和 DataReader 对象依照 EDM 执行查询。它还会将映射域模型所需的客户端视图引擎(根据 EDM 定义的)添加到底层关系数据库架构。必要时,EntityClient 可借助 ESQL 查询字符串让开发人员以行和列的形式处理实体,而不必生成类来表示概念架构。

1. EntityCommand 查询返回实体类型

Entity SQL也可以通过EntityClient 来执行,尽管代码比较啰嗦,但是在某些情况下,也是优点。

1) 首先创建EntityConnection,重用Northwind data context 的连接字符串,并打开连接。

2) 创建 EntityCommand 对象,并传入Entity SQL语句和数据库连接对象。

3) 创建DbDataReader对象,并循环读取返回的结果集。

NorthwindEntities context = new NorthwindEntities();

EntityConnection conn = new EntityConnection(context.Connection.ConnectionString);
conn.Open();

var sql = "SELECT VALUE emp FROM NorthwindEntities.Employees AS emp";
EntityCommand cmd = new EntityCommand(sql, conn);

DbDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (reader.Read())
{
 Console.WriteLine("{0} {1} {2} {3}", reader["EmployeeID"], reader["LastName"],
    reader["FirstName"], reader["Country"]);
}

当时使用SequentialAccess的DbDataReader时,需要小心访问数据,务必有序的读取。

如你改变成员的顺序,将抛出InvalidOperationException 异常 - "Attempt to read from column ordinal '0' is not valid. With CommandBehavior.SequentialAccess, you may only read from column ordinal '2' or greater."

Console.WriteLine("{0} {1} {2} {3}", reader["LastName"], reader["EmployeeID"],
 reader["FirstName"], reader["Country"]);

2. EntityCommand 查询返回匿名类型

采用相同的技术可以实现返回匿名类型。

EntityConnection conn = new EntityConnection(context.Connection.ConnectionString);
conn.Open();

var sql = "SELECT emp.LastName, emp.FirstName " +
          "FROM NorthwindEntities.Employees AS emp";
EntityCommand cmd = new EntityCommand(sql, conn);

DbDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (reader.Read())
{
 Console.WriteLine("{0} {1}", reader["LastName"], reader["FirstName"]);
}

时间: 2024-12-21 22:57:17

Entity Data Model (EDM)深入分析, Part 3的相关文章

Entity Data Model (EDM)深入分析, Part 2

实体 SQL (Entity SQL),它是一种新的 SQL 语言,其中加入了之前的 SQL 语言并不支持的基于概念的查询功能.ESQL 扩展现有 SQL 语言的方式与 EDM 扩展数据库中所使用的关系模型的方式十分类似.此外,ESQL 未绑定到任何特定于后台数据库的语法,因此可一次性编写查询(和/或应用程序),无论针对的是哪个后台数据库都无影响. Entity SQL 是基于文本的.面向集合的.延后绑定的查询语言,也受到了T-SQL的影响.可以使用Entity SQL 创建对EDM的查询,En

Entity Data Model (EDM)深入分析, Part 1

Entity Data Model是.NET Framework v3.5 SP1引入的新功能,比Linq To SQL更加强大的ORM,让开发人员只需要着眼于领域对象模型的开发,而不需要考虑它们是如何与关系数据库交互.本系列文章逐步深入介绍如下内容:EDMX Schema 文件.Model Browser.映射关系.产生的实体类(Generated entity classes).文档(Documentation)等等. 1. EDMX Schema 文件 可以将EDMX作为XML文件打开,你

比较LINQ to SQL Diagram 和Entity Data Model

LINQ to SQL Diagram(DBML)和Entity Data Model(EDMX)都是.Net Framework v3.5 引入的新特性.相信有很多人不清楚它们之间的差异,这里简要分析比较.下面以Northwind 范例数据库进行说明: LINQ to SQL 对象关系图(Object Relational Diagram) Entity Data Model (EDM) 实体数据模型

怎么添加odbc数据源作为 ado .net entity data model

问题描述 [img=http://hiphotos.baidu.com/zhidao/pic/item/9d82d158cacac000800a1892.jpg?t=1327317351142&t=1327317361175][/img] 解决方案 解决方案二:宝贝图片百度交流换个外联解决方案三:既然用了ADO.net干嘛又要用OCDB.解决方案四:图片看不到..

entity和model有什么区别

问题描述 entity和model有什么区别 entity和model有什么区别,在Android 中这两种使用场景是怎么样的? 解决方案 个人感觉,entity强调的是单个的实体,而model比较宽泛,比如说eneites聚合在一起,业务逻辑上的对象等等. 解决方案二: Entity Model

UML建模之数据建模(Data Model Diagram)

一.数据建模简介 数据建模不仅可以对象的属性建模(比如E-R图),也可以对数据的行为建模(比如触发器Trigger. 存储过程Stored Procedure).在进行数据库设计时,设计到如下几个概念: 模式 Schema.主键 Primary.外键 Foreign key.关系 Relationship.约束 constraint.索引 Index.触发器 Trigger.存储过程 Stored Procedure.视图 View. 二.数据建模元素 1.表(Table) 表是关系数据库最基本

Entity SQL Language 一 简介

  本篇约定 文章中只讲Entity SQL不讲EDM或Linq to Entities,EDM的Context一律叫做db或DB 数据库基本以EFQuerySamples的NorthwindEF为例,下载可到http://code.msdn.microsoft.com/EFQuerySamples 文章案T-SQL的语法规则渐近讲解 如果有相关知识不清楚的,可以留言问我 其实简介讲的东西后面都会仔细再讲,如赶时间可以不必看 什么是Entity SQL 这一系列的文章介绍的是Entity SQL

ADO.NET2.0跟ADO.NET3.0的一些新特性简要介绍

ado 觉得很多人在写关于ASP.NET2.0的东东,很少有人写关于ADO.NET2.0的新特性.查找了一下MSDN,给大家介绍几点好了.(如果需要察看所有ADO.NET2.0的新特性,请查看 http://msdn2.microsoft.com/en-us/library/ex6y04yf.aspx) Server Enumeration 用来枚举活动状态的SQL Server实例,版本需要在SQL2000及更新版本.使用的是SqlDataSourceEnumerator类 可以参考以下示例代

VS 2008 sp1 + .NET 3.5 sp1(1)

Entity Framework(实体框架)之添加.查询.更新和删除的Demo 介绍 以Northwind为示例数据库,ADO.NET Entity Framework之完全面向对象的添加操作.查询操作.更新 操作和删除操作 示例 Overview.html <ul> <li>ADO.NET Entity Framework(EF) - 就当是微软的ORM吧,可以将概念模型映射到逻辑模型 ,从而使用概念模型做开发 </li> <li>Entity - 在EF