- 浏览: 1006928 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (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 基本查询
SWFGHO 是什么? SELECT-FROM-WHERE-GROUP BY-HAVING-ORDER BY 的首字母缩写,也是 SQL 查询语句的最基本构成方法。 Entity SQL 是一种 " 仿 SQL" 的语言,因此,它在基本遵守 SFWGHO 的基础上,稍微加以扩展,形成了一套较 SQL 来得强大的查询语句。
表达式
Entity SQL 提供了一种最简单的查询方法 —— 表达式。一个表达式即一个查询语句。
举例说明,以下表达式均可以看作是 Entity SQL 的查询语句 ( 每行一个 ) :
1
1*2%3
MAX({1,3,4})
CASE WHEN MIN(MULTISET(-3,1,9))<0 THEN -100 ELSE 100 END
SUBSTRING('Hello',2,3)
正常的 Entity SQL 写法,例如:
select e from NorthwindEntities . Employees as e
select e .Address, e .City from NorthwindEntities . Employees as e order by e .City
结果:
注意:
· 不支持 SELECT * 操作,必须要 SELECT 列或者实体的别名。
· 建议显式的使用 AS 关键字。虽然在有些情况下, Entity SQL 可以 自动推断别名 ,但有时候,就会出错。因此,显式使用 AS 来声明别名有助于减少错误。
· 不区分大小写。
· ESQL 后面的分号可以省略。
操作符
Entity SQL 支持如下操作符:
优先级 作用与类型 符号
1 层级 .,()[]
2 非 ! not
3 乘除 * / %
4 加减 +-
5 比较 < > <= >=
6 相等 = != <>
7 与 and &&
8 或 or ||
标识符
Entity SQL 提供两种标识符:简单标识符和带引号的标识符。
简单标识符: Entity SQL 中的简单标识符是字母数字和下划线字符的序列。标识符的第一个字符必须是字母字符( a-z 或 A-Z )。
带引号的标识符:带引号的标识符是括在方括号 ([]) 中的任何字符序列。带中文的部分,请使用方括号包括起来,否则会报如下异常信息: “ 简单标识符 “ 中文 ” 只能包含基本拉丁字符。若要使用 UNICODE 字符,请使用转义标识符 ” 。
正确的代码如下: Select c . CustomerID as [ 中文字符 ] from NorthwindEntities . Customers as c order by c . CustomerID skip 0 limit 10
SELECT ROW 和 SELECT VALUE
在 Entity SQL 中, SELECT 又可细分为 SELECT ROW 和 SELECT VALUE 两类。如果直接写 SELECT , Entity SQL 将永远返回行对象集合 —— 即使指定了只返回某一列属性。因此,如果这样写,我们会用类似以下的代码来访问数据:
using (var edm = new NorthwindEntities ())
{
string sqlStr = "select e.Address,e.City from NorthwindEntities.Employees as e order by e.City" ;
ObjectQuery <DbDataRecord > query = edm.CreateQuery<DbDataRecord >(sqlStr);
foreach (DbDataRecord rec in query.Execute(MergeOption .NoTracking))
{
Console .WriteLine(rec["Address"] );
}
Console .WriteLine(query.ToTraceString());
}
Entity SQL 提供了 SELECT VALUE 子句以跳过隐式行构造。 SELECT VALUE 子句中只能指定一项。在使用这样的子句时,将不会对 SELECT 子句中的项构造行包装器,并且可生成所要形状的集合。如果使用 SELECT VALUE ,就可以直接返回这个值,而不使用行来进行返回。例如:
using (var edm = new NorthwindEntities ())
{
//VALUE 后面只能写一个。
string sqlStr = "select VALUE e.Address from NorthwindEntities.Employees as e order by e.City" ;
ObjectQuery <string > query = edm.CreateQuery<string >(sqlStr);
foreach (string result in query.Execute(MergeOption .NoTracking))
{
Console .WriteLine(result );
}
Console .WriteLine(query.ToTraceString());
}
直接查询实体:
using (var edm = new NorthwindEntities ())
{
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e order by e.City" ;
ObjectQuery <Employees > query = edm.CreateQuery<Employees >(sqlStr);
foreach (Employees eTemp in query.Execute(MergeOption .NoTracking))
{
Console .WriteLine(eTemp.Address );
}
Console .WriteLine(query.ToTraceString());
}
WHERE
代码片断:可以使用 and 和 or 增加多条件判断。
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e where e.City = 'London' " ;
ObjectQuery <Employees > query = edm.CreateQuery<Employees >(sqlStr);
foreach (Employees eTemp in query.Execute(MergeOption .NoTracking))
{
Console .WriteLine(eTemp.City);
}
Top
SELECT 子句可以在可选的 ALL/DISTINCT 修饰符之后具有可选的 TOP 子子句。 TOP 子子句指定查询结果中将只返回第一组行。
...
string sqlStr = "select VALUE top (1) e from NorthwindEntities.Employees as e where e.City = 'London'" ;
另使用: “ Select top( 10 ) c . CustomerID from NorthwindEntities . Customers as c order by c . CustomerID ”
...
IN
...
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e where e.City in {'London','testCity'}" ;
...
LIKE
...
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e where e.City like '%nd%'" ;
...
Between And
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e where e.EmployeeID between 1 and 100" ;
参数
代码片断:
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e where e.City = @city " ;
ObjectParameter[] ps = { new ObjectParameter("city", "London") };
ObjectQuery <Employees > query = edm.CreateQuery<Employees >(sqlStr, ps );
foreach (Employees eTemp in query.Execute(MergeOption .NoTracking))
{
Console .WriteLine(eTemp.City);
}
Console .WriteLine(query.ToTraceString());
Order By (asc/desc)
...
string sqlStr = "select VALUE e from NorthwindEntities.Employees as e where e.EmployeeID between 1 and 100 order by e.EmployeeID desc" ;
...
SKIP/LIMIT 分页
可以通过在 ORDER BY 子句中使用 SKIP 和 LIMIT 子句执行物理分页。若要以确定的方式执行物理分页,应使用 SKIP 和 LIMIT 。如果您只是希望以非确定的方式限制结果中的行数,则应使用 TOP 。 TOP 和 SKIP/LIMIT 是互斥的。
以 CustomerID 排序,从第 2 条开始取 10 条记录:
Select value c from NorthwindEntities . Customers as c order by c . CustomerID skip 2 limit 10
Key
提取引用或实体表达式的键。如下 esql 语句,直接返回 Customer 表的主键:
SELECT value key( c ) FROM NorthwindEntities . Customers as c order by c . CustomerID LIMIT 10
CASE
和 TSQL 中的用法一样:
select case when c . CustomerID == 'BOLID' then true else false end from NorthwindEntities . Customers as c order by c . CustomerID limit 10
发表评论
-
C# LINQ to SQL
2017-07-28 12:48 6391、Concat(连接不同的集合不会自动过滤相同项。会延迟计 ... -
基于 EntityFramework 的数据库主从读写分离服务插件
2017-03-08 15:06 11391. 版本信息和源码 1.1 版本信息 v1.01 be ... -
EF6(CodeFirst)+MySql开发
2017-01-06 14:08 1486如题,本文是使用EntityFramework6框架的感悟( ... -
<Entity Framework> - 直接执行数据库命令
2016-08-10 15:00 1515使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库 ... -
EntityFramework执行SQL语句
2016-08-10 14:58 990在EF中执行Sql语句。 Insert Code: ... -
EntityFramework 执行SQL语句进行参数化查询代码示例
2016-08-10 14:59 1892在我们用EntityFramework时,一般情况下我们是要 ... -
Entity Framework 学习中级篇—使EF支持Oracle9i
2011-07-05 16:57 2966从Code MSDN上下载下来的EFOracleProvide ... -
Entity Framework 学习中级篇—EF支持复杂类型的实现
2011-07-05 16:56 12664http://www.cnblogs.com/xray20 ... -
Entity Framework 学习初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateMa
2011-07-05 16:55 6908本节,简单的介绍EF中的 ObjectContext ... -
Entity Framework 学习初级篇--EF基本概况
2011-07-05 16:53 3654自从Entity Framework(EF ... -
Entity Framework 学习高级篇—改善EF代码的方法
2011-07-05 16:39 10117本节,我们将介绍一些改善EF代码的相关方法,如NoTrac ... -
Entity Framework 学习总结之十一:POCO
2011-06-30 11:24 12062POCO Entity Framework ... -
Entity Framework 学习总结之十:加载相关对象
2011-06-30 11:23 3794加载相关对象 实体类型可以定义在数据模型中表 ... -
Entity Framework 学习总结之九:LinqToEntities
2011-06-30 11:22 1615介绍 LINQ to Entities ... -
Entity Framework 学习总结之八:EntitySQL 复杂查询及函数
2011-06-30 11:21 2920复杂查询及函数 外键 Entity ... -
Entity Framework 学习总结之六:EntitySQL 介绍入门
2011-06-30 11:19 1997Entity SQL Language 简介 ... -
Entity Framework 学习总结之五:EntityClient
2011-06-30 11:18 3498System.Data.EntityClient E ... -
Entity Framework 学习总结之四:对象服务介绍使用
2011-06-30 11:18 3054System.Data.Objects (System ...
相关推荐
ef entityframework服务端 封装dll
EntityFramework.SqlServer
* Understand the coreconcepts you need to make the best use of the EF4 in your applications * Learn to query your data, using either LINQ toEntities or Entity SQL * Create Windows Forms, WPF, ASP.NET...
Microsoft.EntityFrameworkCore.SqlServer.dll NuGet 程序包,用以在.NET Core程序中连接SqlServer数据库的组件,当nuget程序包管理器无法正常安装时可以添加此引用到项目中。
是研究EF后所写下的EF学习笔记,主要讲解E-SQL及EF的实际应用等方面做全面介绍,希望对大家有用
A comprehensive guide to the Entity Framework with insight into its latest features and optimizations for responsive data access in your projects About This Book Create Entity data models from your ...
EntityFrameworkCore演示文件,Demo基于.Net Core 2.2实现,1-5分别为: 1-与SqlServer数据库连接并通过ORM创建实体关系映射 2-常见的1:N,N:N,1:1关系 3,4-CRUD 5-种子数据填充。 根据微软MVP大佬杨旭老师...
Data access is an integral part of any ... You'll learn how to retrieve data by querying the Entity Data Model and understand how to use LINQ to Entities and Entity SQL to query the Entity Data Model.
Entity Framework的核心 – EDM(Entity Data Model) 7 EDM概述 7 EDM之CSDL 7 EDM之SSDL 11 EDM之MSL 12 EDM中存储过程的设计 15 EDM中ComplexType的设计 16 实体数据模型映射方案 17 Entity Framework的...
如果使用Entity Framework也用了Z.EntityFramework.Plus.EF6且同时使用Entity Framework Profiler或MiniProfiler监控EF生成的SQL,你可能会遇到他们不兼容的问题,原因是Z.EntityFramework.Plus.EF6识别数据库类型...
Entity Framework Profiler 绿色破解,...需silverlight运行环境,自动监控 Entity Framework ORM产生的SQL语句,是 Entity Framework开发调试的好帮手!!!直接找到SQL短板!!!每年287美元!!!下到你就赚到!!!
ADO.NET Entity Framework
首先介绍一下Entity Framework(个人使用的方式,我没有深入研究),Entity Framework后面简称EF,EF对象关系解决方案,让程序设计者专心于程序设计,不用花时间去研究SQL语句。那么EF是怎么创建数据库,怎么和数据库...
这个资源是使用Entity Framework的时候方便查看Entity Framework生成的SQL语句用的工具,有了这个工具,才能方便的查找性能瓶颈。
LINQ to SQL和Entity Framework对比与关联LINQ to SQL和Entity Framework对比与关联
EntityFramework Profiler-EFProf SQL跟踪优化建议工具
entity framework extensions for 2008sp1.含类库及实例程序。支持在EF中嵌入批量操作的SQL语句,并使得事务可用于当前上下文 和。
EntityFramework.BulkInsert 从Codeplex站点上的原始版本更新了EntityFramework.BulkInsert的端口。 这不是我的原始项目,而是继续进行并添加较小的更新和支持。 原始文件托管在Codeplex上,但后来被删除了。 从那时...
View Entity Data Model DDL SQL Generate Views When right-clicking on an Entity Data Model .edmx file, the following context menu function is available: Generate Views. If you are looking for ...
EntityFrameworkCore.BootKit EntityFrameworkCore引导工具包(EFBK)是用于使用.NET EntityFrameworkCore的快速入门数据库连接库。 特征: 继承自EntityFrameworkCore触发器以启用条目更新通知。 支持多种数据库...