Entity SQL 是类似于 SQL 的、与存储无关的语言。Entity SQL 旨在基于 实体数据模型 (EDM) 查询和处理对象的多功能对象图形。下面我们和SQL语句对比着来学习。ESQL语句是不区分大小写的。

它支持以下功能 (摘在网上)

  支持与不支持的查询:

  from子句

  in和exists

  union, intersect, except来表示并交差集

  join表达式

  支持p.Address.City 这种级联查询

  不支持*操作

  group by时也要select k from T as t group by (t.x + t.y) as k这种方式

  

首先从select开始:

我们常见的SQL语句是:Select * from members

对应的ESQL语句就是:Select value m from members as m

这里的value是必须的 上面的语句也可以这么写:select value members  from members

如果选择某一字段呢?select userid from members

对应的ESQL语句就是:select value m.userid from members as m;

如果要选择一个以上的字段就和上面的不一样,ESQL语句里必须要使用row函数,TSQL:select userid from members

对应的ESQL语句就是:select value row(m.userid,m.username) from members as m;

我们再看下面带where语句的标准SQL:select * from members where userid=1

对应的ESQL语句就是:select value m from members as m where m.userid=1

看到了区别了吧。

那我们下面再写一个带top的SQL语句:select top 10 * from members where userid>0

对应的ESQL语句就是:select value top(10) m from members as m where m.userid>0

下面继续写一个ORDER BY 的语句:select * from members order by userid desc

对应的ESQL语句就是:SELECT value m from members as m order by m.userid desc

如果有多个条件呢?select * from members order by userid desc,username desc

对应的ESQL语句就是:select value m from members as m order by m.userid desc,m.username desc

是不是觉得很EZ??

下面再将一个分页的,分页规则按照USERID降序分页,每页10条。

在MYSQL里面如果要分页的话就可以用下面的SQL

select * from members order by userid desc limit,10,10

其中第一个参数就是从开始的行号,第二个参数是要获取的最多的记录数

如果我们要在SQLSERVER里面的话就要这么写了

select top 10 * from members where userid<(select min(userid) from (select top 10 userid from members order by userid desc) as u) order by userid desc

呵呵,是不是太复杂了??如果我们要在ESQL里面分页怎么办??这时可以使用两个函数skip 和 limit,看一下下面的写法:

select value m from members as m order by m.userid desc skip(10) limit(10)

这里的skip和limit不能脱离order by 子句,skip的意思是说跳过多少行,limit的意思就是选中行的数目,两个函数也可以单独使用,比如

select value m from members as m order by m.userid desc skip(10) 跳过前10行,返回从第11行(包含第11行)以后的所有记录

select value from members as m order by m.userid desc limit(10) 显示前10行记录和TOP的作用是一样的。

需要注意的一点就是:skip和top如果同时使用的话,该查询表达式无效,必须重写查询表达式,使用limit函数

接下来我们一起学习group by  IN EXISTS语句,还是老思路对比着TSQL来学ESQL     。

首先学习group by我们来看一下TSQL:select count(*) from orders group by userid

对应的ESQL语句:select value count(k) from Orders as t group by t.userid as k

当然我们也可以使用其他聚合函数max,min,sum,avg,我这里就不一一演示了

group by 后面的字段不用别名可以不?答案是可以的

再看下面的TSQL语句:select count(*),userid from orders group by userid

对应的ESQL语句:select value row(count(k),k) from orders as t group by t.userid as k

说了这些多,怎么执行ESQL语句呢?

            b2cDBEntities db = new b2cDBEntities();
            string sql = "select value m from members as m";
            var query = db.CreateQuery<Members>(sql);

foreach (var k in query)
            {
                Console.WriteLine(k.UserID);
            }

当然也可以象执行ADO.NET对象一样执行

string ConnectionString = "metadata=res://*/StoreModel.csdl|res://*/StoreModel.ssdl|res://*/StoreModel.msl;provider=System.Data.SqlClient;provider connection string=';Data Source=.;Initial Catalog=b2cDB;Integrated Security=True;MultipleActiveResultSets=True';";
            using (EntityConnection conn = new EntityConnection(ConnectionString))
            {
                conn.Open();
                EntityCommand cmd = conn.CreateCommand();
                string sql = "select VALUE m from b2cDBEntities.members as m";
                cmd.CommandText = sql;
                EntityDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
                while (dr.Read())
                {
                    Console.WriteLine(dr["UserID"]);
                }
                dr.Close();
            }

转载于:https://www.cnblogs.com/sobaby/archive/2009/01/20/1378859.html

一起学习MVC(4)-entity SQL语句相关推荐

  1. MySQL基础学习(三)————SQL语句的常用操作

    文章目录 1.库 1.1库的创建 1.2 库的删除 1.3 库的修改 1.4 库的查找 2.表 2.1 表的创建 2.2 表的删除 2.3 表的修改 2.4 表的查找 3.数据或者记录 3.1 数据的 ...

  2. mysql中resultmap_MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    二.SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyB ...

  3. 数据库学习day_02:表格相关sql语句 / 表格数据相关sql语句 / sql中的数据类型 / 导入外部sql文件 / 去重.是否为null.and与or.in.[x,y]

    1.表相关的SQL语句 操作表相关的SQL 必须先使用某个数据库 create database mydb1; show create database mydb1; use mydb1; 如果默认不 ...

  4. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    二.SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyB ...

  5. JDBC学习笔记(查询SQL语句得到的结果对象)

    通过Statement或PreparedStatement执行查询SQL语句后会得到一个结果对象(ResultSet) 一.ResultSet:结果集,操作查询操作后的数据表 本质:ResultSet ...

  6. SQL学习笔记1:SQL语句可以分三类

    From <SQL基础教程 [日] MICK> 根据对RDBMS赋予的指令种类的不同,SQL语句可以分为以下三类: DDL DDL(Data Definition Language,数据定 ...

  7. Ibatis学习总结7--SqlMapClient 执行 SQL 语句

    SqlMapCient 类提供了执行所有 mapped statement 的 API.这些方法如下: 1 public int insert(String statementName, Object ...

  8. 存储过程和SQL语句比较【转】

    做为SQL存储过程和.NET的新手,下面的指导还是很有用的,自己这一段刚刚接触这些东西,搜集了一些相关的东西,能使新手较容易上手,当然啦,要精通和熟练应用,还是要看更多更深的资料的,高手请不要见笑. ...

  9. sql语句ding_Navicat写sql语句的具体方法步骤

    你们知道Navicat中怎么写sql语句吗?不清楚的朋友可以去下文学习一下Navicat写sql语句的具体方法步骤哦. Navicat写sql语句的具体方法步骤 步骤一 打开你电脑里的Navicat ...

  10. Oracle数据库sql语句练习【emp和dept的连表查询由浅入深】

    Oracle SQL语句练习题 一.表的介绍 Oracle中有几个原始的表,我们可以以其中的三个表为例,来学习一下Oracle中SQL语句的使用.先看下这几个表的结构: 雇员表(emp) 假设该表中的 ...

最新文章

  1. Apache httpd服务
  2. 用神经网络分类一维矩阵
  3. 近世代数--整环--高斯整环
  4. Extjs 入门(03) 折叠||收锉
  5. C++ 函数重载碰到默认的参数
  6. php如何用菜刀连接getshell,phpmyadmin之getshell总结
  7. 剑指offer面试题[41]-和为s的两个数VS和为s的连续正数序列
  8. MyBatis--动态插入多条数据
  9. X 1 BT5kali
  10. ad怎么修改栅格_AD18怎么改变pcb原理图的网格大小
  11. 360 android root权限获取root,360 N5 root过程详解
  12. 华为开源镜像站体验评测报告
  13. 提升领导力这7个法则,你不得不知道
  14. 【机器学习】强化学习算法的优化
  15. 小精灵家庭理财 v3.01 是什么
  16. 【创新实训】BERT4EL,基于文本相似度的实体消歧实现
  17. 3d transform的(x、y、z)坐标空间及位置
  18. 混合罚函数法matlab报错,罚函数法MATLAB程序
  19. 基恩士读码器HR-101B USB-COM连接读取数据
  20. c#输出二维数组矩阵

热门文章

  1. Oracle基础 10 表 table
  2. urdf 学习笔记一
  3. 11462 - Age Sort
  4. hdu 1856 求集合里元素的个数 输出最大的个数是多少
  5. thinkphp 字段静态验证$_validate中错误提醒多语言化写成{%LANGUATE}的原因
  6. windows下重设mysql的root密码
  7. 小程序对实体行业转型有何影响?
  8. Mysql DBA 高级运维学习之路-DML语句之insert知识讲解
  9. 偏差、方差和噪声的权衡关系
  10. SOA与云计算有多大关联?