- 浏览: 1009397 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
Entity SQL Language 简介
什么是 Entity SQL
Entity SQL 类似 SQL 语言,它的存在是为了查询 ADO.NET Entity Framework ( EF ),以用于支持 Entity Data Model ( EDM ) 。 EDM 表示一组实体与关系( ER )的集合,映射到指定的数据源(可以是 MsSql 或其它类型的数据库)。 Entity SQL 支持 EDM ,使用户能够有效地查询数据。
Entity SQL 与 T-SQL
Entity SQL 支持 EDM 的直接查询,包括它的继承及关系。它在语法上与 T-SQL 类似,但也有很多不同。
支持与不支持的查询:
1) from 子句
2) in 和 exists
3) union, intersect, except 来表示并交差集
4) join 表达式
5) 支持 p.Address.City 这种级联查询
6) 不支持 * 操作
7) group by 时也要 select k from T as t group by (t.x + t.y) as k 这种方式
8) 无法使用 T-SQL 的函数
它支持 T-SQL 的子查询和表达式,它可以用于任何支持它的数据库,这里给出一些合法的表达式:
· 1+2 *3
· "abc"
· row(1 as a, 2 as b)
· { 1, 3, 5}
· e1 union all e2
· set(e1)
对比的例子:
T-SQL : select t.x + t.y from T as t group by t.x + t.y
Entity SQL : select k from T as t group by (t.x + t.y) as k
Entity Sql 也支持这种方式: select Tab.a from Tab
Entity SQL 支持的数据类型:
· 第一类是原始数据类型,例如 EMD.Int32 。
· 第二类是在模式( Schema )中定义的类型,例如实体类型、关系类型等;
· 第三类是临时出现的类型:像集合、行和引用,它们都是匿名类型。
临时出现的类型
首先,为什么管它们叫归结为临时出现的类型?大家知道, EF 采用对象模型,而 SQL 等数据库是关系模型,它们之间要进行数据传递,必然有一个关系模型到对象模型的转换;另外,关系模型的相互数据交换,也可借用一下这些类型直接进行,而不必绕圈子。而这些类型的数据,一旦这个交互种过结束,也就意味着这个类型的对象将会消亡。故将这一些类型归结为一类。
其次,这一类包含了哪些数据类型?
1) 集合( Collection )
2) 行( Row )
3) 引用 (Ref)
集合: 使用 MULTISET() 或者花括号 ——{} 来创建,例如: MULTISET("Lenovo", "HP", "ASUS") ,这等价于: {"Lenovo", "HP", "ASUS"} 。
可以用集合返回一系列的值,例如: SELECT BRAND FROM MULTISET("Lenovo", "HP", "ASUS") AS BRAND
这将返回三个 String 类型的行,每行一个品牌名称。
再如: MAX(MULTISET("Lenovo", "HP", "ASUS")) ,将会根据字母进行排序后,返回值最大的字符串 ——Lenovo 。
行: 行的概念比较简单,它使用关键字 ROW 构建,形成一个行对象。例如: ROW("Lenovo" as Brand, "T61" as Type) ,将会返回一个由 Brand 和 Type 列构成的行对象。
将行和集合稍作组合,便可以返回一个多行的集合: MULTISET(ROW("Lenovo" as Brand, "T61" as Type),ROW("HP" as Brand, "V3911TU" as Type))
注:列名称取的是第一个行对象的别名,下面这个语句,跟上面这一语句是等效的: MULTISET(ROW("Lenovo" as Brand, "T61" as Type),ROW("HP" as aaa, "V3911TU" as bbb))
引用: 相当于数据库中的指针。有两种方式来创建引用。
第一种,使用 REF 关键字。
select value c from NorthwindEntities . Customers as c
将返回所有的 Customers 的对象集合。
那么,通过添加关键字 REF :
select ref (c) from NorthwindEntities . Customers as c
将返回一个引用集合:
第二种,使用 CREATEREF 关键字。例如:
CREATEREF ( NorthwindEntities . Employees , ROW ( 1 ));
其中使用 ROW 关 键字,传入需要引用的行的主键的值。那么,我们有什么必要去使用引用?我们可以把引用看成是一种获取数据的轻型的解决方案,我们记录了在哪儿去获取值,但 是并没有真正的数据获取出来,这样,不到必要时候,就没有必要在应用程序和数据库之间传递大量的数据。在上面那条语句中,我们并没有取出所有的值。而一旦 必要,只要访问一下这个实体集的任意一个属性,或者使用 DEREF 表达式,即可获取数据。
例如: CREATEREF ( NorthwindEntities . Employees , ROW ( 2 )). Address
如果要获取整个行的,则使用 DEREF : DEREF ( CREATEREF ( NorthwindEntities . Employees , ROW ( 2)))
其实,如果我们改一个形式:
DEREF ( CREATEREF ( NorthwindEntities . Employees , ROW (@ EmployeeID )))
在实际应用中,我们经常要根据主键,来获取一个实体,这时,把传入的主键参数化,返回整个实体。这也可以算是一个典型应用了。
注释
Entity SQL 查询可以包含注释。注释行以两个短划线 (--) 开头。
例如: " select ref (c) from NorthwindEntities . Customers as c -- this a comment "
另 ESQL : 内部存在一些关键字: NULL 、 BOOLEAN 、 INTEGER 、 DECIMAL 、 FLOAT 、 DOUBLE 、 STRING 、 DATETIME 、 TIME 、 DATETIMEOFFSET 、 BINARY 、 GUID
这些类型几乎都是可以通用于各种数据库的。 Entity SQL 支持的字符集: UTF-16
发表评论
-
C# LINQ to SQL
2017-07-28 12:48 6441、Concat(连接不同的集合不会自动过滤相同项。会延迟计 ... -
基于 EntityFramework 的数据库主从读写分离服务插件
2017-03-08 15:06 11431. 版本信息和源码 1.1 版本信息 v1.01 be ... -
EF6(CodeFirst)+MySql开发
2017-01-06 14:08 1501如题,本文是使用EntityFramework6框架的感悟( ... -
<Entity Framework> - 直接执行数据库命令
2016-08-10 15:00 1525使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库 ... -
EntityFramework执行SQL语句
2016-08-10 14:58 997在EF中执行Sql语句。 Insert Code: ... -
EntityFramework 执行SQL语句进行参数化查询代码示例
2016-08-10 14:59 1897在我们用EntityFramework时,一般情况下我们是要 ... -
Entity Framework 学习中级篇—使EF支持Oracle9i
2011-07-05 16:57 2972从Code MSDN上下载下来的EFOracleProvide ... -
Entity Framework 学习中级篇—EF支持复杂类型的实现
2011-07-05 16:56 12668http://www.cnblogs.com/xray20 ... -
Entity Framework 学习初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateMa
2011-07-05 16:55 6913本节,简单的介绍EF中的 ObjectContext ... -
Entity Framework 学习初级篇--EF基本概况
2011-07-05 16:53 3658自从Entity Framework(EF ... -
Entity Framework 学习高级篇—改善EF代码的方法
2011-07-05 16:39 10123本节,我们将介绍一些改善EF代码的相关方法,如NoTrac ... -
Entity Framework 学习总结之十一:POCO
2011-06-30 11:24 12068POCO Entity Framework ... -
Entity Framework 学习总结之十:加载相关对象
2011-06-30 11:23 3798加载相关对象 实体类型可以定义在数据模型中表 ... -
Entity Framework 学习总结之九:LinqToEntities
2011-06-30 11:22 1621介绍 LINQ to Entities ... -
Entity Framework 学习总结之八:EntitySQL 复杂查询及函数
2011-06-30 11:21 2924复杂查询及函数 外键 Entity ... -
Entity Framework 学习总结之七:EntitySQL 基本查询
2011-06-30 11:20 2097Entity SQL 基本查询 SW ... -
Entity Framework 学习总结之五:EntityClient
2011-06-30 11:18 3504System.Data.EntityClient E ... -
Entity Framework 学习总结之四:对象服务介绍使用
2011-06-30 11:18 3059System.Data.Objects (System ...
相关推荐
EntityFrameworkCore引导工具包(EFBK)是用于使用.NET EntityFrameworkCore的快速入门数据库连接库。 特征: 继承自EntityFrameworkCore触发器以启用条目更新通知。 支持多种数据库,例如MySql,SQL Server,...
EntityFrameworkCore实例操作sqlserver数据库,实现增删改查(dbfirst和codefirst) 博文地址:https://blog.csdn.net/u010476739/article/details/100775556
EntityFrameworkCore.Triggered :angry_face_with_horns: 触发EF Core。 在DbContext中将更改提交到数据库之前和之后进行响应。 NuGet软件包 EntityFrameworkCore.Triggered EntityFrameworkCore.Triggered....
Entity Framework 教程入门教程
欢迎来到EntityFrameworkCore的文档数据库(NoSQL)提供程序之家! 该存储库当前仅包含EF Core的MongoDB提供程序。 但是,当前路线图中已计划通过进一步的NoSQL提供程序产品来扩展此功能。 MongoDb是一种非常流行...
有关更多信息,请参见 Getting Started with the Entity Framework(实体框架入门)。实体框架还引入了一些其他功能,包括支持 SQL Server 2008 的新类型、默认实体图形序列化和实体数据源。在此版本中,实体框架...
.net core的mvc入门实例代码 orm数据访问层用的是entity framework,数据库用的是sql server
10.强大的DataGrid组件[2]_数据交互之ADO.NET Entity Framework 11.强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记 12-13.强大的DataGrid组件[4]_实现CURD 14.强大的DataGrid组件[6]_调用...
子文件夹包含性能基准,可用于针对Entity Framework Core和Entity Framework 6测试XPO。包括所有必需的DevExpress引用。 无需技术支持即可免费获得 如果您不需要DevExpress支持团队的技术帮助,则可以免费在应用...
在Framework1.0下同时连接SqlServer和Oracle的一些体会 XML XPath XPath最通俗的教程(ZZ) XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个...
Entity framework ExecuteStoreQuery 631ms Performance of SELECT mapping over 500 iterations - dynamic serialization Method Duration Remarks Dapper ...
Dapper是一个适用于.NET平台、轻量级的ORM框架,在性能方面拥有微型ORM之王的美誉,几乎与原生ADO.NET数据读取器一样快,如果你在小的项目中使用Entity Framework、NHibernate等框架来处理大数据访问及关系映射,...
达托该存储库的主要目的是演示使用SQL Server和的存储的自定义实现,以防您不想使用Entity Framework提供的默认实现。 该示例应用程序使用ASP.NET Core 3.1,并且是使用和SQL Local DB构建的。入门该解决方案包含一...
该库可以显示LINQ to SQL驱动程序和Entity Framework Core 5查询计划。 从NuGet安装 如果您具有LINQPad的Developer或更高版本,则可以使用NuGet中的LINQPadQueryPlanVisualizer程序包将可视化工具添加到查询中。 ...
第6章 LINQ to SQL入门 156 6.1 走入LINQ to SQL 157 6.1.1 创建对象映射 159 6.1.2 设定DataContext 161 6.2 通过LINQ to SQL读取数据 161 6.3 继续改进查询 165 6.3.1 过滤 165 6.3.2 排序和分组 ...
对于数据库访问,EntityFramework Core已与SQL Server一起用作数据源。 ####入门该应用程序默认在端口5001和5000上运行,可以从launchSettings.json文件进行更改。 要开始,克隆或下载源代码,请在“ ...
第6章 LINQ to SQL入门 156 6.1 走入LINQ to SQL 157 6.1.1 创建对象映射 159 6.1.2 设定DataContext 161 6.2 通过LINQ to SQL读取数据 161 6.3 继续改进查询 165 6.3.1 过滤 165 6.3.2 排序和分组 ...
第6章 LINQ to SQL入门 156 6.1 走入LINQ to SQL 157 6.1.1 创建对象映射 159 6.1.2 设定DataContext 161 6.2 通过LINQ to SQL读取数据 161 6.3 继续改进查询 165 6.3.1 过滤 165 6.3.2 排序和分组 ...
第6章 LINQ to SQL入门 156 6.1 走入LINQ to SQL 157 6.1.1 创建对象映射 159 6.1.2 设定DataContext 161 6.2 通过LINQ to SQL读取数据 161 6.3 继续改进查询 165 6.3.1 过滤 165 6.3.2 排序和分组 ...
第6章 LINQ to SQL入门 156 6.1 走入LINQ to SQL 157 6.1.1 创建对象映射 159 6.1.2 设定DataContext 161 6.2 通过LINQ to SQL读取数据 161 6.3 继续改进查询 165 6.3.1 过滤 165 6.3.2 排序和分组 ...