Entity SQL Language 三 Where/Exists/In/Like/参数及外键查询
上文写了关于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/参数及外键查询相关推荐
- sql server 快照_在SQL Server合并复制中应用快照时出现外键问题
sql server 快照 This article will review specific SQL Server merge replication issues related to forei ...
- 测牛学堂:软件测试之数据库操作语句sql的外键查询
mysql外键总结 我们之前学习的都是针对一个表的操作.如果要进行多个表之间的操作,就要用到外键把他们关联起来. 外键的作用:能够让多个表进行关联,使表与表之间有联系,实现共性抽取. 应用场景 如果数 ...
- SQL笔记-使用not in在多个没有外键关联的表中查询
在Mysql或者其他库里面,这个其他库指关系型数据库,现在有个nosql很火,不知道什么时候能在项目里面用到这个! 比如有2张表,一张学生表,一张选课表,选课表里面有学生ID作为外键.现在要查询,目前 ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- mysql和sql定义外键约束_SQL外键约束的含义及创建
建立外键约束可以对sql语句的增删改有约束作用. 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键 ...
- spark SQL(三)数据源 Data Source----通用的数据 加载/保存功能
Spark SQL 的数据源------通用的数据 加载/保存功能 Spark SQL支持通过DataFrame接口在各种数据源上进行操作.DataFrame可以使用关系变换进行操作,也可以用来创建临 ...
- Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架
长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情. ...
- SQL 分为三种类型
SQL 分为三种类型: DDL(数据定义语言(Data Definition Language),开发前的设计):主要指数据对象的创建(表.用户): DML(数据操作语言(Data Manipulat ...
- pl/sql中三种游标循环效率对比
pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...
最新文章
- caioj 1063 动态规划入门(一维一边推1:美元和马克)
- ITK:用常量填充图像
- rocketmq 消费方式_RocketMQ事务消费和顺序消费详解
- webstorm 破解方式
- python 享元模式_设计模式-创建型模式,python享元模式 、python单例模式(7)
- golang mysql条件查询_mysql – 将变量传递给GoLang查询
- 力扣——合并两个有序链表
- 删除一个目录下的所有文件,但保留一个指定文件
- 在线表单收集系统Tduck(docker篇)
- 关于地统计的一些知识点
- mybatis基础(上)
- 苹果听天由命 未雇佣游说公司处理欧盟补税案
- 【Unity Shader】新书封面 — Low Polygon风格的渲染
- cadence SPB17.4 - 从正常PCB文件反推原理图
- mysql中,涉及到金钱的数据类型一般是什么?
- 苹果手机隐私分析数据是什么_苹果和谷歌可能是我们在隐私操作系统上的最佳选择...
- 说唱 -- 再见大四
- 选Python还是Java?
- e3哪种型号做服务器好些,至强E3处理器 不可小觑_服务器产业-中关村在线
- 高德地图Js API的使用
热门文章
- 前端开发中Cookie那些事儿
- Oracle 登录时错误: ORA-01017: invalid username/password; logon denied
- Heartbeats
- IOS的UI基础02
- [改善Java代码]养成良好习惯,显式声明UID
- spring中关于aop拦截功能的记录
- Struts 2.5.20 在Eclipse配置
- 笔记:django is not a registered namespace错误
- Java包的命名规范
- bzoj1297 [SCOI2009]迷路(矩阵优化)