MyDAL - .Where() & .And() & .Or() 使用
索引:
一.API 列表
1.Where
.Where(Func<M, bool> func)
如: .Where( it => (it.Prop1>=条件1 && it.Prop2<=条件2) || it.Prop3==条件3 ) 此类写法,
用在 Deleter/Updater/Queryer(单表) 中.
.Where(Func<bool>)
如: .Where( () => m1.PropX==条件1 || m2.PropY>条件2 && m3.PropZ<条件3 ) 此类写法,用在 Queryer(多表) 中.
2.And
.And(Func<M, bool> func) 同 .Where(Func<M, bool> func) .
.And(Func<bool>) 同 .Where(Func<bool>) .
3.Or
.Or(Func<M, bool> func) 同 .Where(Func<M, bool> func) .
.Or(Func<bool>) 同 .Where(Func<bool>) .
注: where and or 三个 api 是可以组合使用的,我在这里将他们的关系 处理为 sql 中同样的用法,
即一个 sql 查询中只可以点出一个where,但可以点出多个and 或 or
如: ...Where(xxx).And(yyy).Or(mmm).And(zzz)..... .
二.使用举例
1.删除数据
var path = "~00-c-1-2-1-1-1-1-1-4-1-1-1-4-1-2-1-7";
var level = ;
// where and
var res3 = await Conn
.Deleter<Agent>()
.Where(it => it.PathId == path)
.And(it => it.AgentLevel == (AgentLevel)level)
.DeleteAsync();
以 MySQL 为例,生成 SQL 如下:
delete
from `Agent`
where `PathId`=?PathId_1
and `AgentLevel`=?AgentLevel_2 ;
2.更新数据
var res8 = await Conn
.Updater<Agent>()
.Set(it => it.AgentLevel, AgentLevel.NewCustomer)
.Where(it => it.Id == Guid.Parse("0014f62d-2a96-4b5b-b4bd-01654438e3d4"))
.UpdateAsync();
以 MySQL 为例,生成 SQL 如下:
update `Agent`
set `AgentLevel`=?AgentLevel_1
where `Id`=?Id_2 ;
3.单表 查询数据
var guid4 = Guid.Parse("000cecd5-56dc-4085-804b-0165443bdf5d");
var pathId4 = "~00-d-3-2-1-c-2-f-4-3-1-2-4";
var level4 = AgentLevel.Customer;
var res4 = await Conn
.Queryer<Agent>()
.Where(it => it.Id == guid4 && it.AgentLevel==level4 && it.PathId == pathId4)
.QueryListAsync();
以 MySQL 为例,生成 SQL 如下:
select *
from `Agent`
where (( `Id`=?Id_3 && `AgentLevel`=?AgentLevel_4 ) && `PathId`=?PathId_5 )
order by `CreatedOn` desc ;
4.多表连接 查询数据
var res6 = await Conn
.Queryer(out Agent agent6, out AgentInventoryRecord record6)
.From(() => agent6)
.InnerJoin(() => record6)
.On(() => agent6.Id == record6.AgentId)
.Where(() => agent6.Id == guid6)
.QueryOneAsync<Agent>();
以 MySQL 为例,生成 SQL 如下:
select agent6.`*`
from `Agent` as agent6
inner join AgentInventoryRecord as record6
on agent6.`Id`=record6.`AgentId`
where agent6.`Id`=?Id_4
order by agent6.`CreatedOn` desc ;
蒙
2018-11-18 16:32 周日
2018-12-13 15:27 周四
2018-12-30 11:15 周日
2019-02-24 17:45 周日
2019-04-12 18:04 周五
MyDAL - .Where() & .And() & .Or() 使用的更多相关文章
- MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用
索引: 目录索引 一.API 列表 .DeepClone() 用于 Model / Entity / ... ... 等引用类型对象的深度克隆 特性说明 1.不需要对对象做任何特殊处理,直接 .Dee ...
- MyDAL - 组件适用范围说明
索引: 目录索引 一.组件特性简介: 1.MSIL 底层代码采用 System.Reflection.Emit.Lightweight 类库使用 IL 的方式处理 Model 组装,性能刚刚的~ 2. ...
- MyDAL - 快速使用
索引: 目录索引 一.安装 在 VS 中执行一下 package 命令: PM> Install-Package MyDAL 二.API-快速使用 1.命名空间,只需: using MyDAL; ...
- MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用
索引: 目录索引 一.API 列表 1.WhereSegment 属性,指示 根据条件 动态拼接 where 查询过滤条件 见如下示例. 二.API 单表-完整 方法 举例 // 上下文条件 变量 v ...
- MyDAL - .UpdateAsync() 之 .SetSegment 根据条件 动态设置 要更新的字段 使用
索引: 目录索引 一.API 列表 1.SetSegment 属性,指示 根据条件 动态拼接 要修改的字段 见如下示例. 二.API 单表-完整 方法 举例 // update 要赋值的变量 var ...
- MyDAL - .UpdateAsync() 之 .Set() 使用
索引: 目录索引 一.API 列表 1.Set<M, F>(Expression<Func<M, F>> propertyFunc, F newVal) 如: .S ...
- MyDAL - .UpdateAsync() 使用
索引: 目录索引 一.API 列表 1.UpdateAsync() 用于 单表 更新操作 二.API 单表-便捷 方法 举例-01 var pk1 = Guid.Parse("8f2cbb6 ...
- MyDAL - in && not in 条件 使用
索引: 目录索引 一.API 列表 C# 代码中 接口 IList.Contains() 方法生成 SQL 对应的 in(val1,val2,... ...) 如:.Queryer<Agent& ...
- MyDAL - like && not like 条件 使用
索引: 目录索引 一.API 列表 C# 代码中 String.Contains("conditionStr") 生成 SQL 对应的 like '%conditionStr%' ...
- MyDAL - is null && is not null 条件 使用
索引: 目录索引 一.API 列表 C# 代码中 instance.property == null 生成 SQL 对应的 is null : 如:.Queryer<Agent>() .. ...
随机推荐
- java技术栈范畴
基础 进阶 数据 安全
- vue-router中元信息meta的妙用
{ path:"/test", name:"test", component:()=>import("@/components/test&quo ...
- 学习笔记—CSS基础
概念 CSS 指层叠样式表(Cascading Style Sheets), 是一种标记语言,属于浏览器解释型语言,可以直接由浏览器执行,不需要编译. HTML只负责网页的内容,标签尽量只负责语意不负 ...
- iOS----------面试常问
1.valueForKey 和 valueForKeyPath的区别是什么?
- Luogu P5285 [十二省联考2019]骗分过样例
Preface ZJOI一轮被麻将劝退的老年选手看到这题就两眼放光,省选也有乱搞题? 然后狂肝了3~4天终于打完了,期间还补了一堆姿势 由于我压缩技术比较菜,所以用的都是非打表算法,所以一共写了5K- ...
- java常用工具(jps等)说明
Java为我们提供了大量的工具辅助我们进行开发,位于jdk目录下的bin目录里,本篇博客将会随时更新相关工具的使用说明. jps 获取当前运行的java应用 lgj@lgj-Lenovo-G470:~ ...
- 写给 Android 开发的小程序布局指南,Flex 布局!
一.序 Hi,大家好,我是承香墨影! 最近在做小程序,验证一些方向,开发效率确实很快,就是各种微信的审核有点费劲,但是总归是有办法解决的. 想要开发一款小程序,其实和我们正常写一款 App 类似,你需 ...
- async/await使用深入详解
async和await作为异步模型代码编写的语法糖已经提供了一段时间不过一直没怎么用,由于最近需要在BeetleX webapi中集成对Task方法的支持,所以对async和await有了深入的了解和 ...
- 学习ASP.NET Core Razor 编程系列十八——并发解决方案
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- Spring Boot 2.x :通过 spring-boot-starter-hbase 集成 HBase
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本文内容 HBase 简介和应用场景 spring-boot- ...