上文写了关于Where及Select的基本操作,这一篇讲一下Where的进阶操作

先说一下查看所生成的SQL的方法,.ToTraceString()
例如:

string entitySQL = "select value a from orders as a;";var query = db.CreateQuery<Orders>(entitySQL);Console.WriteLine(query.ToTraceString());

参数

参数可以通过CreateQuery的第二个参数传递进去。

DateTime dt = new DateTime(1997, 1, 1);ObjectParameter[] ps = { new ObjectParameter("dt", dt) };ObjectQuery<Orders> query = db.CreateQuery<Orders>("SELECT VALUE Orders FROM Orders WHERE Orders.OrderDate < @dt;", ps);

这里通过@dt将参数传了进去,执行结果:

外键关系

Entity SQL与其它的查询一样,可以通过外键的关系直接取值或判断,如:

ObjectQuery<Orders> query = db.CreateQuery<Orders>(                   "SELECT VALUE o FROM Orders AS o WHERE o.Customers.Country = 'Mexico';");

我们直接用o.Customers.Country这是一个一对多的外键关系。

多条件查询

与T-SQL相同,只要用相应的逻辑关键字即可。如:

string entitySQL = "SELECT VALUE p FROM Products AS p WHERE p.UnitsInStock < p.ReorderLevel and p.UnitsOnOrder = 0;";ObjectQuery<Products> query = db.CreateQuery<Products>(entitySQL);

Exists查询

做为Where的一个经常用的谓词,Exists的使用方法如下:

string entitySQL = @"SELECT VALUE s FROM Suppliers AS s WHERE EXISTS(SELECT p FROM s.Products AS p WHERE p.UnitsInStock = 0);";var query = db.CreateQuery<bool>(entitySQL);

运行后生成的SQL如下:

SELECT[Extent1].[Address] AS [Address],[Extent1].[City] AS [City],[Extent1].[CompanyName] AS [CompanyName],[Extent1].[ContactName] AS [ContactName],[Extent1].[ContactTitle] AS [ContactTitle],[Extent1].[Country] AS [Country],[Extent1].[Fax] AS [Fax],[Extent1].[HomePage] AS [HomePage],[Extent1].[Phone] AS [Phone],[Extent1].[PostalCode] AS [PostalCode],[Extent1].[Region] AS [Region],[Extent1].[SupplierID] AS [SupplierID]FROM [dbo].[Suppliers] AS [Extent1]WHERE  EXISTS (SELECTcast(1 as bit) AS [C1]FROM [dbo].[Products] AS [Extent2]WHERE ([Extent1].[SupplierID] = [Extent2].[SupplierID]) AND ([Extent2].[UnitsInStock] = 0))

IN查询

In查询当然也是不可少的。使用方法如下:

string entitySQL =@"SELECT VALUE c FROM Customers AS c WHERE c.City in {'Seattle','harbin'}";var query = db.CreateQuery<Orders>(entitySQL);

LIKE查询

like做为一个模糊查询的关键字是一定要支持的。

string entitySQL =@"SELECT VALUE c FROM Customers AS c WHERE c.City like '%at%';";var query = db.CreateQuery<Orders>(entitySQL);

Between、And查询

string entitySQL =@"SELECT VALUE c FROM Customers AS c WHERE c.ID between 1 and 100";var query = db.CreateQuery<Orders>(entitySQL);

Entity SQL Language 三 Where/Exists/In/Like/参数及外键查询相关推荐

  1. sql server 快照_在SQL Server合并复制中应用快照时出现外键问题

    sql server 快照 This article will review specific SQL Server merge replication issues related to forei ...

  2. 测牛学堂:软件测试之数据库操作语句sql的外键查询

    mysql外键总结 我们之前学习的都是针对一个表的操作.如果要进行多个表之间的操作,就要用到外键把他们关联起来. 外键的作用:能够让多个表进行关联,使表与表之间有联系,实现共性抽取. 应用场景 如果数 ...

  3. SQL笔记-使用not in在多个没有外键关联的表中查询

    在Mysql或者其他库里面,这个其他库指关系型数据库,现在有个nosql很火,不知道什么时候能在项目里面用到这个! 比如有2张表,一张学生表,一张选课表,选课表里面有学生ID作为外键.现在要查询,目前 ...

  4. SQL点滴35—SQL语句中的exists

    原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...

  5. mysql和sql定义外键约束_SQL外键约束的含义及创建

    建立外键约束可以对sql语句的增删改有约束作用. 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键 ...

  6. spark SQL(三)数据源 Data Source----通用的数据 加载/保存功能

    Spark SQL 的数据源------通用的数据 加载/保存功能 Spark SQL支持通过DataFrame接口在各种数据源上进行操作.DataFrame可以使用关系变换进行操作,也可以用来创建临 ...

  7. Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架

    长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情. ...

  8. SQL 分为三种类型

    SQL 分为三种类型: DDL(数据定义语言(Data Definition Language),开发前的设计):主要指数据对象的创建(表.用户): DML(数据操作语言(Data Manipulat ...

  9. pl/sql中三种游标循环效率对比

    pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...

最新文章

  1. caioj 1063 动态规划入门(一维一边推1:美元和马克)
  2. ITK:用常量填充图像
  3. rocketmq 消费方式_RocketMQ事务消费和顺序消费详解
  4. webstorm 破解方式
  5. python 享元模式_设计模式-创建型模式,python享元模式 、python单例模式(7)
  6. golang mysql条件查询_mysql – 将变量传递给GoLang查询
  7. 力扣——合并两个有序链表
  8. 删除一个目录下的所有文件,但保留一个指定文件
  9. 在线表单收集系统Tduck(docker篇)
  10. 关于地统计的一些知识点
  11. mybatis基础(上)
  12. 苹果听天由命 未雇佣游说公司处理欧盟补税案
  13. 【Unity Shader】新书封面 — Low Polygon风格的渲染
  14. cadence SPB17.4 - 从正常PCB文件反推原理图
  15. mysql中,涉及到金钱的数据类型一般是什么?
  16. 苹果手机隐私分析数据是什么_苹果和谷歌可能是我们在隐私操作系统上的最佳选择...
  17. 说唱 -- 再见大四
  18. 选Python还是Java?
  19. e3哪种型号做服务器好些,至强E3处理器 不可小觑_服务器产业-中关村在线
  20. 高德地图Js API的使用

热门文章

  1. 前端开发中Cookie那些事儿
  2. Oracle 登录时错误: ORA-01017: invalid username/password; logon denied
  3. Heartbeats
  4. IOS的UI基础02
  5. [改善Java代码]养成良好习惯,显式声明UID
  6. spring中关于aop拦截功能的记录
  7. Struts 2.5.20 在Eclipse配置
  8. 笔记:django is not a registered namespace错误
  9. Java包的命名规范
  10. bzoj1297 [SCOI2009]迷路(矩阵优化)