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"]);
}

3. EntityCommand 带参数查询

EntityCommand 带参数也比较容易,在Entity SQL字符串中参数名称以@作为前缀,接着创建EntityParameter对象,并增加到EntityCommand 的Parameters集合内。
EntityConnection conn = new EntityConnection(context.Connection.ConnectionString);
conn.Open();
var sql = "SELECT VALUE emp FROM NorthwindEntities.Employees AS emp " +
"WHERE emp.Country = @country";
EntityCommand cmd = new EntityCommand(sql, conn);
EntityParameter param = new EntityParameter("country", DbType.String);
param.Value = "USA";
cmd.Parameters.Add(param);
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (reader.Read())
{
Console.WriteLine("{0} {1} {2} {3}", reader["EmployeeID"], reader["LastName"],
reader["FirstName"], reader["Country"]);
}
LINQ to Entities
LINQ是在.NET v3.5 引入的新技术。相对于前面的Entity SQL而言,我更偏爱LINQ to entities。LINQ查询虽然有一些局限,但是LINQ更容易、更自然,此外,还支持强类型,因此智能提示能帮助编写LINQ查询脚本。
LINQ to Entities 与LINQ to Objects和LINQ to SQL 基本一样,因此下面简单演示2个基本的LINQ to Entities的查询。

1. LINQ 带参数查询

NorthwindEntities context = new NorthwindEntities();
string country = "USA";
var query = from e in context.Employees
where e.Country == country
select e;
foreach (var emp in query)
Console.WriteLine("{0} {1} {2} {3}", emp.EmployeeID, emp.FirstName, emp.LastName, emp.Country);

2. LINQ 查询返回匿名类型

NorthwindEntities context = new NorthwindEntities();
var query = from e in context.Employees
select new { e.LastName, e.FirstName };
foreach (var emp in query)
Console.WriteLine("{0} {1}", emp.LastName, emp.FirstName);
这篇文章对Entity Data Model 和Entity Framework 提供了各种查询技术进行了简单的介绍,希望对你有帮助。下一篇文章将介绍更高级的 Entity SQL 查询技术、查看SQL 语句、eager loading、变更跟踪、并发… 等等。
推荐Entity Framework 相关文章:
1. Entity Framework – Update Model From Database, Part 1
http://blog.entlib.com/EntLib/archive/2008/10/19/entity-framework-update-model-from-database-part-1.aspx
2. Entity Framework – Update Model From Database, Part 2
http://blog.entlib.com/EntLib/archive/2008/10/19/entity-framework-update-model-from-database-part-2.aspx
3. Entity Framework 架构简介
http://blog.entlib.com/EntLib/archive/2008/10/19/entity-framework-architecture.aspx
4. 比较LINQ to SQL Diagram 和Entity Data Model
http://blog.entlib.com/EntLib/archive/2008/10/19/linq-to-sql-diagram-entity-data-model.aspx
英文链接:
1. ADO.NET Entity Framework & LINQ to Entities,
http://www.scip.be/index.php?Page=ArticlesNET12
 

转载于:https://www.cnblogs.com/l1b2q31/articles/1715424.html

Entity Data Model (EDM) 深入分析, Part 3相关推荐

  1. vs2010下使用ADO.NET Entity Data Model

    使用vs2010中的mvc3创建项目,同时想使用ADO.NET Entity Data Model来做数据库访问,可是创建项目后中不到 ADO.NET Entity Data Model. 一下是解决 ...

  2. ADO.NET Entity Data Model入门实例

    ADO.NET Entity Data Model入门实例 快速开发一个网站,最繁琐的地方可能要算数据库访问和ORM了,还好.net中这个很强大,可以省去好多体力劳动. 这里就给个快速使用ADO.NE ...

  3. 概念模型 - Conceptual Data Model

    承接上一篇博客:数据模型 - Data Model 概念模型 1. 是现实世界到机器世界的一个中间层次 概念模型用于信息世界建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力 ...

  4. CRM的客户数据模型:Siebel Party Data Model (VI)

    关于Siebel CRM Thomas Siebel和 Patricia House 在1993成立了Siebel公司.起先由销售自动化产品起家,然后在扩展到更大的CRM市场.在20世纪90年代末,S ...

  5. Data Model(数据模型)

    前言 最近开始使用PowerDesigner进行数据模型设计,看到下图突然间就想起来了大学所学<数据库系统概论>一书中的数据模型部分,随赶紧拿出来对照温习.真有种甘之如霖.醍醐灌顶的赶脚啊 ...

  6. Java:bean、entity、model、domain区别与作用

    bean 包含的都是 JavaBean. JavaBean 是一种 Java 语言写成的可重用组件.为写成 JavaBean,类必须是具体和公共的,并且具有无参数的构造器.JavaBean 通过提供符 ...

  7. PO、POJO、VO、Entity、Model、DTO的区别

    Bean.PO.POJO.VO.Entity.Model.DTO.DAO的区别总结 1.Bean 对于Bean而言,我的理解是只要是Java的类的就可以称为一个Bean,更用在Spring上,被Spr ...

  8. An eventually consistent data model for Erlang (and Riak)

    CAP理论指出:一个分布式系统不可能同时满足一致性(Consistency).可用性(Availibility)和分区容忍性(Partition Tolerance)这三个需求,最多只能同时满足其中的 ...

  9. 四、物理数据模型PDM(Physical Data Model )

    一.     PDM 介绍 物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设 ...

最新文章

  1. 单独使用 EHCache
  2. python 苹果李子橙_Python模块知识6:OS、SYS模块
  3. Hyperledger Fabric 核心模块(2)configtxgen工具
  4. MySQL FLOAT、DOUBLE、DECIMAL(小数类型)
  5. linux中用户与组的概念,Linux用户和组的概念
  6. 腾讯视频如何退出登陆
  7. Active Diretory 全攻略(三)--建立域(5)
  8. GDB动态库搜索路径
  9. 190119每日一句
  10. 游戏平台搭建免费版教程
  11. 算法图解第九章笔记与习题(动态规划)
  12. 个税服务器系统繁忙,2021个人所得税系统异常进不去怎么办?系统繁忙请稍后再试怎么回事...
  13. 经典特别好用的局域网传输文件聊天工具飞秋和飞鸽传书
  14. 泛微E-Office v9任意文件上传(CNVD-2021-49104)复现
  15. Excel 如何批量查询快递单号
  16. 三维全景融合拼接技术
  17. winserver2003打开ping
  18. 30天Python基础(正则表达式)
  19. 群雄当立,逐鹿分布(二)Paxos传说之败走拜占庭
  20. 我裁完兄弟后,辞职了,转行做了一名小职员

热门文章

  1. 嵌入式C语言编程——.h文件与.c文件
  2. php怎么把时间戳转成日期格式,php怎么把时间格式转换为时间戳?,时间戳转为日期...
  3. php右侧弹窗QQ客服,JavaScript_网页右侧悬浮滚动在线qq客服代码示例,网页右侧悬浮滚动QQ在线客服 - phpStudy...
  4. 网管型工业交换机和 非网管型工业交换机的优缺点
  5. 什么是HDMI视频光端机?
  6. [渝粤教育] 中国传媒大学 政治传播学 参考 资料
  7. 【渝粤教育】国家开放大学2018年秋季 3781-22T燃气燃烧技术与设备 参考试题
  8. 【渝粤教育】国家开放大学2018年秋季 2322T物流信息技术 参考试题
  9. 【渝粤题库】国家开放大学2021春1400机器人技术及应用题目
  10. 【渝粤题库】国家开放大学2021春1356高级英语听说(2)题目