索引:

目录索引

一.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() 使用的更多相关文章

  1. MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用

    索引: 目录索引 一.API 列表 .DeepClone() 用于 Model / Entity / ... ... 等引用类型对象的深度克隆 特性说明 1.不需要对对象做任何特殊处理,直接 .Dee ...

  2. MyDAL - 组件适用范围说明

    索引: 目录索引 一.组件特性简介: 1.MSIL 底层代码采用 System.Reflection.Emit.Lightweight 类库使用 IL 的方式处理 Model 组装,性能刚刚的~ 2. ...

  3. MyDAL - 快速使用

    索引: 目录索引 一.安装 在 VS 中执行一下 package 命令: PM> Install-Package MyDAL 二.API-快速使用 1.命名空间,只需: using MyDAL; ...

  4. MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用

    索引: 目录索引 一.API 列表 1.WhereSegment 属性,指示 根据条件 动态拼接 where 查询过滤条件 见如下示例. 二.API 单表-完整 方法 举例 // 上下文条件 变量 v ...

  5. MyDAL - .UpdateAsync() 之 .SetSegment 根据条件 动态设置 要更新的字段 使用

    索引: 目录索引 一.API 列表 1.SetSegment 属性,指示 根据条件 动态拼接 要修改的字段 见如下示例. 二.API 单表-完整 方法 举例 // update 要赋值的变量 var ...

  6. MyDAL - .UpdateAsync() 之 .Set() 使用

    索引: 目录索引 一.API 列表 1.Set<M, F>(Expression<Func<M, F>> propertyFunc, F newVal) 如: .S ...

  7. MyDAL - .UpdateAsync() 使用

    索引: 目录索引 一.API 列表 1.UpdateAsync() 用于 单表 更新操作 二.API 单表-便捷 方法 举例-01 var pk1 = Guid.Parse("8f2cbb6 ...

  8. MyDAL - in && not in 条件 使用

    索引: 目录索引 一.API 列表 C# 代码中 接口 IList.Contains() 方法生成 SQL 对应的 in(val1,val2,... ...) 如:.Queryer<Agent& ...

  9. MyDAL - like && not like 条件 使用

    索引: 目录索引 一.API 列表 C# 代码中 String.Contains("conditionStr") 生成 SQL 对应的 like '%conditionStr%' ...

  10. MyDAL - is null && is not null 条件 使用

    索引: 目录索引 一.API 列表 C# 代码中 instance.property == null 生成 SQL 对应的 is null : 如:.Queryer<Agent>() .. ...

随机推荐

  1. Sql的分库分表,及优化

    对Sql细节优化 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 首先给大家介绍一下分库分表 分库分表 分库 垂直分库 业务 ...

  2. Oracle数据库知识要点

    一.卸载安装(来自百度经验) 完全卸载: 1. 停止相关服务 2. 运行Universal Installer,卸载产品 3. 清理注册表 4. 重启电脑,删除目录(Oracle文件夹和app文件夹) ...

  3. 和我一起学习爬虫之HTTP/HTTPS抓包工具--Fiddler

    HTTP/HTTPS抓包工具--Fiddler Fiddler[ˈfɪdlə(r)] 1. HTTP代理神器Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP ...

  4. 积极参与开源项目,促进.NET Core生态社区发展

    今天早上在微信群里聊天聊到百度的SDK 已经支持.NET Core, 百度已经在3月份就支持了,想起当时还是我在他们的github上提的issue: https://github.com/Baidu- ...

  5. ubuntu16.04 apt-get update出错:由于没有公钥,无法验证下列签名

    问题: W: 校验数字签名时出错.此仓库未被更新,所以仍然使用此前的索引文件.GPG 错误:https://packagecloud.io/github/git-lfs/ubuntu xenial I ...

  6. springcloud~服务注册与发现Eureka的使用

    服务注册与发现是微服务里的概念,也是一个基本的组件,负责服务组件的认证,即实现『你是谁』的功能,在服务注册与发现里,存在两种模式,即服务端发现和客户端发现,咱们今天说的eureka属于客户端发现! 下 ...

  7. .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐

    作者:依乐祝 原本链接:https://www.cnblogs.com/yilezhu/p/9947905.html 引子 为什么写这篇文章呢?因为.NET Core的生态越来越好了!之前玩转.net ...

  8. 从零开始搭建一个规范的vue-cli 3.0项目

    在这一集我们将讲到如何从安装vue-cli开始,到新建一个本地项目,再到vscode中关于eslint的配置,以及本地项目关联公司远程项目的基本操作. 一,初始化本地项目 1,首先,全局安装vue-c ...

  9. 解决WebMagic抓HTTPS时出现SSLException

    访问我的博客 前言 在今年二月份在项目中引入了 WebMagic 技术,用来抓取合作方的书籍,详见之前文章:WebMagic之爬虫监控,这两天新接入了一个合作商,对方接口采取的是 HTTPS 协议,而 ...

  10. 推荐一款好用的任务定时器:Quartz

    前言 官网:https://www.quartz-scheduler.net/ 一款开源的任务定时器. 日常有很多地方需要定时刷新的,比如微信开发中的微信API token,或者定时清理一下缓存数据等 ...