- 浏览: 1024486 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (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 6811、Concat(连接不同的集合不会自动过滤相同项。会延迟计 ... -
基于 EntityFramework 的数据库主从读写分离服务插件
2017-03-08 15:06 11751. 版本信息和源码 1.1 版本信息 v1.01 be ... -
EF6(CodeFirst)+MySql开发
2017-01-06 14:08 1574如题,本文是使用EntityFramework6框架的感悟( ... -
<Entity Framework> - 直接执行数据库命令
2016-08-10 15:00 1559使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库 ... -
EntityFramework执行SQL语句
2016-08-10 14:58 1051在EF中执行Sql语句。 Insert Code: ... -
EntityFramework 执行SQL语句进行参数化查询代码示例
2016-08-10 14:59 1927在我们用EntityFramework时,一般情况下我们是要 ... -
Entity Framework 学习中级篇—使EF支持Oracle9i
2011-07-05 16:57 3014从Code MSDN上下载下来的EFOracleProvide ... -
Entity Framework 学习中级篇—EF支持复杂类型的实现
2011-07-05 16:56 12712http://www.cnblogs.com/xray20 ... -
Entity Framework 学习初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateMa
2011-07-05 16:55 6955本节,简单的介绍EF中的 ObjectContext ... -
Entity Framework 学习初级篇--EF基本概况
2011-07-05 16:53 3707自从Entity Framework(EF ... -
Entity Framework 学习高级篇—改善EF代码的方法
2011-07-05 16:39 10164本节,我们将介绍一些改善EF代码的相关方法,如NoTrac ... -
Entity Framework 学习总结之十一:POCO
2011-06-30 11:24 12109POCO Entity Framework ... -
Entity Framework 学习总结之十:加载相关对象
2011-06-30 11:23 3820加载相关对象 实体类型可以定义在数据模型中表 ... -
Entity Framework 学习总结之九:LinqToEntities
2011-06-30 11:22 1654介绍 LINQ to Entities ... -
Entity Framework 学习总结之八:EntitySQL 复杂查询及函数
2011-06-30 11:21 2976复杂查询及函数 外键 Entity ... -
Entity Framework 学习总结之六:EntitySQL 介绍入门
2011-06-30 11:19 2050Entity SQL Language 简介 ... -
Entity Framework 学习总结之五:EntityClient
2011-06-30 11:18 3528System.Data.EntityClient E ... -
Entity Framework 学习总结之四:对象服务介绍使用
2011-06-30 11:18 3096System.Data.Objects (System ...
相关推荐
- **查询优化**:Entity Framework能够智能地优化查询语句,将其转化为高效的SQL语句。 - **类型安全**:使用LINQ to Entities进行查询时,编译器会在编译时检查语法错误,提高了程序的健壮性。 #### 四、总结 LINQ...
标题中的`EntityFramework.SqlServer_EntityFramework_`可能是指这个项目或库是关于Entity Framework与SQL Server数据库交互的一个部分,可能是对原生EF的增强或者封装,目的是为了简化和优化SQL Server的数据操作。...
随着.NET Framework的发展,数据访问技术也随之进化。从最初的ADO.NET,到后来出现的各种简化封装和技术革新,如SqlHelper、DAAB(Data Access Application Block)、LINQ,直至现在广泛推荐使用的Entity Framework...
- ObjectQuery用于执行对数据库的查询,它可以使用LINQ to Entities语法或者Entity SQL进行查询。 3. **ObjectStateEntry和ObjectStateManager**: - ObjectStateEntry表示单个实体对象的状态,如新(新建)、已...
本篇学习笔记主要关注的是Entity SQL(E-SQL),这是EF提供的一种结构化查询语言,类似于标准的SQL,但设计用于与EF一起工作。E-SQL并不支持直接的Insert、Update、Delete操作,这意味着开发者不能像在常规SQL中那样...
- Entity SQL:一种不依赖于特定数据库的SQL方言,它直接与概念模型交互,支持EDM的特性,如继承和复杂关系。 - 查询生成器方法:提供了LINQ风格的查询方法来构造Entity SQL查询。 EF通过使用基于XML的模型和映射...
在本节中,我们将详细介绍 Entity Framework 中的多表查询方式,包括简单查询、查询部分字段、查询单一记录、LEFT JOIN 连接查询和 INNER JOIN 连接查询等。 简单查询 在 Entity Framework 中,可以使用 Func 形式...
在Entity Framework中,开发者可以通过使用C#等.NET语言编写数据访问代码,无需直接使用SQL语句。Code First是Entity Framework的一种开发模式,它允许开发者从编写数据模型类开始,然后通过框架的能力来生成数据库...
这个压缩包“entityFramework源代码”包含的是Entity Framework 6的源码,对于想要深入理解其工作原理和实现细节的开发者来说,这是一个宝贵的资源。 Entity Framework 6的主要特点包括: 1. **Code First**:这是...
总结来说,"EntityFramework.zip"中的资源很可能是关于如何在.NET环境中使用Entity Framework进行数据库操作和实体与DTO之间映射的实例和指南。对于.NET开发者来说,理解并掌握这些概念和技术对于提升开发效率和代码...
EntityFramework.SqlServer
### LINQ to SQL与Entity Framework对比分析 #### 一、概述 随着软件开发技术的不断发展,数据访问技术也在不断地更新换代。LINQ to SQL 和 Entity Framework 作为两种主流的对象关系映射(Object-Relational ...
- **查询生成器方法**:允许开发者使用 LINQ 风格的语法构建复杂的 Entity SQL 查询。 #### 五、基本操作 - **增加**:使用 ObjectContext 对象创建新实体并添加到集合中。 - **更新**:通过更改实体属性值并在适当...
EntityFramework.dll是微软开发的一个强大的对象关系映射(ORM)框架——Entity Framework的核心组件,主要用于.NET应用程序中。这个4.1版本的DLL文件是Entity Framework的早期版本,它为开发者提供了一个更简单的...
为了适应不同应用场景,Entity Framework Core提供了多个.NET实现的支持,并详细描述了不同的数据库提供程序(如Microsoft SQL Server、SQLite、内存优化表InMemory),以及如何编写自定义的数据库提供程序。...
通过深入学习和实践Entity Framework,开发者可以更加高效地进行数据操作,减少与数据库的直接交互,提高代码的可维护性和可读性。同时,由于ORM框架的存在,开发者可以更加专注于业务逻辑,而不是数据库的细节。...
1. EntityFrameworkCore(EFCore)与EntityFramework6(EF6)的对比: - EFCore是轻量级、可扩展和跨平台的版本,专注于支持.NET Core项目。 - EF6是一个经过长时间测试的数据访问技术,功能丰富且稳定性较高。 -...
5. Entity SQL:与标准SQL类似,但专为Entity Framework设计,允许更灵活的查询实体数据。 6. ObjectQuery查询及方法:这部分详细讲解了如何使用ObjectQuery进行复杂的数据库查询,包括过滤、排序、分组等操作。 7. ...
Entity Framework(EF)是Microsoft开发的一个对象关系映射(ORM)框架,用于.NET应用程序,它允许开发者使用.NET语言(如C#或VB.NET)来操作数据库,而无需编写大量的SQL语句。本教程将深入探讨Entity Framework的...
EntityFrameworkCore是一个强大的ORM(对象关系映射)框架,专为.NET Core和.NET Framework设计,由微软维护。它使得.NET开发者无需直接操作SQL语句,就能通过C#代码与数据库进行交互,极大地提高了开发效率。Entity...