MyDAL - .QueryListAsync() 使用
索引:
一.API 列表
.QueryListAsync()
.QueryListAsync<M>()
如: .QueryListAsync<AgentInventoryRecord>() , 用于 单表/多表连接 查询.
.QueryListAsync<VM>()
如: .QueryListAsync<AgentVM>() , 用于 单表 查询.
.QueryListAsync<T>(Expression<Func<M, T>> columnMapFunc)
如: .QueryListAsync(it => it.Name) , 用于 单表 单列 查询.
或者:
.QueryListAsync(agent => new AgentVM
{
XXXX = agent.Name,
YYYY = agent.PathId
}) , 用于 单表 多列 查询.
.QueryListAsync<T>(Expression<Func<T>> columnMapFunc)
如: .Queryer(out Agent agent1, out AgentInventoryRecord record1)
... ...
.QueryListAsync(() => agent1.CreatedOn) , 用于 多表连接 单列 查询.
或者: .Queryer(out Agent agent12, out AgentInventoryRecord record12)
... ...
.QueryListAsync(() => new AgentVM
{
nn = agent12.PathId,
yy = record12.Id,
xx = agent12.Id,
zz = agent12.Name,
mm = record12.LockedCount
}) , 用于 多表连接 多列 查询.
二.API 单表-便捷 方法 举例
1. 单表 单列 多条 便捷方法
var res7 = await Conn.QueryListAsync<Agent, string>(it => it.Name.StartsWith("张"), it => it.Name);
以 MySQL 为例,生成 SQL 如下:
select `Name`
from `Agent`
where `Name` like ?Name_1;
2. 单表 多列 多条 便捷方法
var date = DateTime.Parse("2018-08-20");
var res3 = await Conn.QueryListAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.CreatedOn >= date,
it => new AlipayPaymentRecordVM
{
TotalAmount = it.TotalAmount,
Description = it.Description
});
以 MySQL 为例,生成 SQL 如下:
select `TotalAmount` as TotalAmount,
`Description` as Description
from `AlipayPaymentRecord`
where `CreatedOn`>=?CreatedOn_1;
3. 单表 VM 多条 便捷方法
var date = DateTime.Parse("2018-08-20");
var res2 = await Conn.QueryListAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.CreatedOn >= date);
以 MySQL 为例,生成 SQL 如下:
select `Id`,
`CreatedOn`,
`TotalAmount`,
`Description`,
`CanceledOn`
from `AlipayPaymentRecord`
where `CreatedOn`>=?CreatedOn_1;
4. 单表 M 多条 便捷方法
var date = DateTime.Parse("2018-08-20");
var res1 = await Conn.QueryListAsync<AlipayPaymentRecord>(it => it.CreatedOn >= date);
以 MySQL 为例,生成 SQL 如下:
select *
from `AlipayPaymentRecord`
where `CreatedOn`>=?CreatedOn_1;
三.API 单表-完整 方法 举例
1. 单表 单列 多条 完整方法
var res2 = await Conn
.Queryer<Agent>()
.Where(it => it.AgentLevel == AgentLevel.DistiAgent)
.QueryListAsync(it => it.Name);
以 MySQL 为例,生成 SQL 如下:
select `Name`
from `Agent`
where `AgentLevel`=?AgentLevel_1;
2.单表 多列 多条 完整方法
var res5 = await Conn
.Queryer<Agent>()
.Where(it => it.AgentLevel == AgentLevel.DistiAgent)
.QueryListAsync(agent => new AgentVM
{
XXXX = agent.Name,
YYYY = agent.PathId
});
以 MySQL 为例,生成 SQL 如下:
select `Name` as XXXX,
`PathId` as YYYY
from `Agent`
where `AgentLevel`=?AgentLevel_1;
3.单表 VM 多条 完整方法
var testQ5 = new WhereTestModel
{
CreatedOn = DateTime.Now.AddDays(-),
StartTime = WhereTest.CreatedOn,
EndTime = DateTime.Now,
AgentLevelXX = AgentLevel.DistiAgent,
ContainStr = "~00-d-3-1-"
};
var res5 = await Conn
.Queryer<Agent>()
.Where(it => it.CreatedOn >= testQ5.StartTime)
.QueryListAsync<AgentVM>();
以 MySQL 为例,生成 SQL 如下:
select `Id`,
`CreatedOn`,
`UserId`,
`PathId`,
`Name`,
`Phone`
from `Agent`
where `CreatedOn`>=?CreatedOn_1;
4. 单表 M 多条 完整方法
var start = WhereTest.CreatedOn.AddDays(-);
var res2 = await Conn
.Queryer<BodyFitRecord>()
.Where(it => it.CreatedOn >= start)
.QueryListAsync();
以 MySQL 为例,生成 SQL 如下:
select *
from `BodyFitRecord`
where `CreatedOn`>=?CreatedOn_1;
四.API 多表连接-完整 方法 举例
1.多表连接 单列 多条 完整方法
var res1 = await Conn
.Queryer(out Agent agent1, out AgentInventoryRecord record1)
.From(() => agent1)
.InnerJoin(() => record1)
.On(() => agent1.Id == record1.AgentId)
.Where(() => agent1.AgentLevel == AgentLevel.DistiAgent)
.QueryListAsync(() => agent1.CreatedOn);
以 MySQL 为例,生成 SQL 如下:
select agent1.`CreatedOn`
from `Agent` as agent1
inner join AgentInventoryRecord as record1
on agent1.`Id`=record1.`AgentId`
where agent1.`AgentLevel`=?AgentLevel_4;
2.多表连接 多列 多条 完整方法
var res12 = await Conn
.Queryer(out Agent agent12, out AgentInventoryRecord record12)
.From(() => agent12)
.InnerJoin(() => record12)
.On(() => agent12.Id == record12.AgentId)
.Where(() => record12.CreatedOn >= WhereTest.CreatedOn)
.QueryListAsync(() => new AgentVM
{
nn = agent12.PathId,
yy = record12.Id,
xx = agent12.Id,
zz = agent12.Name,
mm = record12.LockedCount
});
以 MySQL 为例,生成 SQL 如下:
select agent12.`PathId` as nn,
record12.`Id` as yy,
agent12.`Id` as xx,
agent12.`Name` as zz,
record12.`LockedCount` as mm
from `Agent` as agent12
inner join AgentInventoryRecord as record12
on agent12.`Id`=record12.`AgentId`
where record12.`CreatedOn`>=?CreatedOn_4;
3.多表连接 M 多条 完整方法
var res1 = await Conn
.Queryer(out Agent agent1, out AgentInventoryRecord record1)
.From(() => agent1)
.InnerJoin(() => record1)
.On(() => agent1.Id == record1.AgentId)
.Where(() => agent1.CreatedOn >= WhereTest.CreatedOn.AddDays(-))
.QueryListAsync<AgentInventoryRecord>();
以 MySQL 为例,生成 SQL 如下:
select record1.`*`
from `Agent` as agent1
inner join AgentInventoryRecord as record1
on agent1.`Id`=record1.`AgentId`
where agent1.`CreatedOn`>=?CreatedOn_4;
蒙
2018-12-26 15:25 周三
2018-12-30 11:30 周日
2019-04-12 23:29 周五
MyDAL - .QueryListAsync() 使用的更多相关文章
- MyDAL - 快速使用
索引: 目录索引 一.安装 在 VS 中执行一下 package 命令: PM> Install-Package MyDAL 二.API-快速使用 1.命名空间,只需: using MyDAL; ...
- MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用
索引: 目录索引 一.API 列表 1.WhereSegment 属性,指示 根据条件 动态拼接 where 查询过滤条件 见如下示例. 二.API 单表-完整 方法 举例 // 上下文条件 变量 v ...
- MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用
索引: 目录索引 一.API 列表 .DeepClone() 用于 Model / Entity / ... ... 等引用类型对象的深度克隆 特性说明 1.不需要对对象做任何特殊处理,直接 .Dee ...
- 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 - 组件适用范围说明
索引: 目录索引 一.组件特性简介: 1.MSIL 底层代码采用 System.Reflection.Emit.Lightweight 类库使用 IL 的方式处理 Model 组装,性能刚刚的~ 2. ...
- MyDAL - is null && is not null 条件 使用
索引: 目录索引 一.API 列表 C# 代码中 instance.property == null 生成 SQL 对应的 is null : 如:.Queryer<Agent>() .. ...
- MyDAL - .Where() & .And() & .Or() 使用
索引: 目录索引 一.API 列表 1.Where .Where(Func<M, bool> func) 如: .Where( it => (it.Prop1>=条件1 &am ...
- MyDAL - .OpenDebug() 与 Visual Studio 输出窗口 使用
索引: 目录索引 SQL Debug 信息说明 一. 对 XConnection 对象 未开启 OpenDebug, 在 VS 状态下,将默认在 VS 窗口 打印出 参数化的 SQL 执行语句: 新 ...
随机推荐
- 卷积神经网络之LeNet
开局一张图,内容全靠编. 上图引用自 [卷积神经网络-进化史]从LeNet到AlexNet. 目前常用的卷积神经网络 深度学习现在是百花齐放,各种网络结构层出不穷,计划梳理下各个常用的卷积神经网络结构 ...
- javascript入门篇(六、正则表达式)
JavaScript 正则表达式 正则表达式是由一个字符序列形成的搜索模式.当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式可以是一个简单的字符,或一个更复杂的模式.正则表达 ...
- Yii2设计模式——工厂方法模式
应用举例 yii\db\Schema抽象类中: //获取数据表元数据 public function getTableSchema($name, $refresh = false) { if (arr ...
- Android使用google breakpad捕获分析native cash
Android 开发高手课 课后练习(1) 一.Chapter01 崩溃 https://time.geekbang.org/column/article/70602 https://github.c ...
- SqlServer中的系统数据库
SqlServer中的系统数据库有五个,平时写代码不太关注,今天一时兴起研究了一下. 1. master 记录SQL Server系统的所有系统级信息,例如:登陆账户信息.链接服务器和系统配置设置.记 ...
- 关于Python中读取写入文件并进行文件与用户交互的操作
一.提前知识点 在python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...
- Windows10家庭版运行应用提示”管理员已阻止你运行此应用...“的解决办法
win10版本家庭中文版: 运行应用程序报错: 解决办法(亲试): 1.进入”控制面板“--”用户账户“--”用户账户“,选择”更改用户账户控制设置“,选择最后一项,点击”确定“按钮,如下图: 2.按 ...
- Python中星号的本质和使用方式
翻译:Python 开发者 - 一汀, 英文:Trey Hunner http://blog.jobbole.com/114655/ Python开发者 在 Python 中有很多地方可以看到*和** ...
- Spring 对Controller异常的统一处理
对于Controller的异常处理,分为两种,一种是对已知的异常处理,一种是未知的异常处理 1.定义自定义异常类 /** * @author hzc * */ public class UserNot ...
- Android开发:UI相关(一)自定义样式资源
一.自定义样式资源: 1.在drawble中新建xml资源文件: 如果新建的xml文件没有自动放置在drawable文件夹下,就手动移动到drawable下. 2.编写样式代码: < ...