实体 SQL (Entity SQL),它是一种新的 SQL 语言,其中加入了之前的 SQL 语言并不支持的基于概念的查询功能。ESQL 扩展现有 SQL 语言的方式与 EDM 扩展数据库中所使用的关系模型的方式十分类似。此外,ESQL 未绑定到任何特定于后台数据库的语法,因此可一次性编写查询(和/或应用程序),无论针对的是哪个后台数据库都无影响。
Entity SQL 是基于文本的、面向集合的、延后绑定的查询语言,也受到了T-SQL的影响。可以使用Entity SQL 创建对EDM的查询,Entity SQL 既可以通过Object Services components来执行,也可以通过Entity Client components 来执行。Entity SQL 设计的非常灵活,因此也变得有些复杂。本篇文章侧重于不同的查询技术,仅仅使用简单的查询,不包含复杂的条件、关联和聚合公式。
本系列文章上一篇:
Entity Data Model (EDM) 深入分析, Part 1
1. 使用ObjectQuery<T> 查询返回实体类型(Entity Type)集合
下面演示如何执行Entity SQL 查询,返回实体类型的实例集合。
1) 首先创建Northwind ObjectContext 实例。
2) Entity SQL语句本身是字符串表达式,在大多数情况下,由SELECT-FROM 查询语句组成。在SELECT语句中使用VALUE关键字来表示返回的实体是一条数据行。
3) 使用Object Services components 执行查询。调用ObjectContext 的工厂方法CreateQuery<T>(),创建一个ObjectQuery 对象,该对象表示对存储数据源的查询,查询表达式为Entity SQL 语句。
4) Entity Framework实体框架采用延迟装载(Deferred loading)。因此只有在显式需要数据时,才真正执行SQL语句。在这种情况下,在ForEach第一次迭代时,才执行查询语句。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!