索引:

目录索引

一.API 列表

  .QueryOneAsync()

  .QueryOneAsync<M>()

    如: .QueryOneAsync<Agent>() , 用于 单表/多表连接 查询.

  .QueryOneAsync<VM>()

    如: .QueryOneAsync<AgentVM>() , 用于 单表 查询.

  .QueryOneAsync<T>(Expression<Func<M, T>> columnMapFunc)

    如: .QueryOneAsync<Guid>(it => it.Id) , 用于 单表 单列 查询.

    或者:

        .QueryOneAsync<AgentVM>(it => new AgentVM
                   {
                      XXXX = it.Name,
                      YYYY = it.PathId
                   })    , 用于 单表 多列 查询.

  .QueryOneAsync<T>(Expression<Func<T>> columnMapFunc)

    如: .Queryer(out Agent agent, out AgentInventoryRecord agentRecord)

      ......

      .QueryOneAsync<string>(() => agent.Name)

      用于 多表连接 单列 查询.

    或者:

      .Queryer(out Agent agent2, out AgentInventoryRecord record2)

      ......

      .QueryOneAsync(() => new AgentVM
                   {
                      nn = agent2.PathId,
                      yy = record2.Id,
                      xx = agent2.Id,
                      zz = agent2.Name,
                      mm = record2.LockedCount
                     })  , 用于 多表连接 多列 查询.

二.API 单表-便捷 方法 举例

  1. 单表 单列 便捷方法    

             var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
var date= DateTime.Parse("2018-08-20 19:12:05.933786"); var res3 = await Conn
5          .QueryOneAsync<AlipayPaymentRecord, Guid>(it => it.Id == pk && it.CreatedOn == date,it=>it.Id);

    以 MySQL 为例,生成 SQL 如下:

 select `Id`
from `AlipayPaymentRecord`
where ( `Id`=?Id_2 && `CreatedOn`=?CreatedOn_3)
limit 0,1;

  2. 单表 多列 便捷方法

             var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
var date= DateTime.Parse("2018-08-20 19:12:05.933786"); var res4 = await Conn
           .QueryOneAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.Id == pk && it.CreatedOn == date,
it => new AlipayPaymentRecordVM
{
Id = it.Id,
TotalAmount = it.TotalAmount,
Description = it.Description
});

    以 MySQL 为例,生成 SQL 如下:

 select     `Id` as Id,
`TotalAmount` as TotalAmount,
`Description` as Description
from `AlipayPaymentRecord`
where ( `Id`=?Id_2 && `CreatedOn`=?CreatedOn_3)
limit 0,1;

  3. 单表 单条 VM 便捷方法

             var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
var date = DateTime.Parse("2018-08-20 19:12:05.933786"); var res5 = await Conn
5          .QueryOneAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.Id == pk && it.CreatedOn == date);

    以 MySQL 为例,生成 SQL 如下:

 select     `Id`,
`CreatedOn`,
`TotalAmount`,
`Description`,
`CanceledOn`
from `AlipayPaymentRecord`
where ( `Id`=?Id_2 && `CreatedOn`=?CreatedOn_3)
limit 0,1;

  4. 单表 单条 M 便捷方法

             var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
var date = DateTime.Parse("2018-08-20 19:12:05.933786"); var res6 = await Conn
5          .QueryOneAsync<AlipayPaymentRecord>(it => it.Id == pk && it.CreatedOn == date);

    以 MySQL 为例,生成 SQL 如下:

 select *
from `AlipayPaymentRecord`
where ( `Id`=?Id_2 && `CreatedOn`=?CreatedOn_3)
limit 0,1;

三.API 单表-完整 方法 举例

  1. 单表 单列 完整方法

             var time1 = DateTime.Parse("2018-08-16 19:22:01.716307");

             var res1 = await Conn
.Queryer<Agent>()
.Where(it => it.CreatedOn == time1)
.QueryOneAsync<Guid>(it => it.Id);

    以 MySQL 为例,生成 SQL 如下:

 select `Id`
from `Agent`
where `CreatedOn`=?CreatedOn_1
limit 0,1;

  2.单表 多列 完整方法

             var res3 = await Conn
.Queryer<Agent>()
.Where(it => it.Id == Guid.Parse("000c1569-a6f7-4140-89a7-0165443b5a4b"))
.QueryOneAsync<AgentVM>(it => new AgentVM
{
XXXX = it.Name,
YYYY = it.PathId
});

    以 MySQL 为例,生成 SQL 如下:

 select     `Name` as XXXX,
`PathId` as YYYY
from `Agent`
where `Id`=?Id_1
limit 0,1;

  3.单表 单条 VM 完整方法

             var res1 = await Conn
.Queryer<Agent>()
.Where(it => it.Id == Guid.Parse("000c1569-a6f7-4140-89a7-0165443b5a4b"))
.QueryOneAsync<AgentVM>();

    以 MySQL 为例,生成 SQL 如下:

 select     `Id`,
`CreatedOn`,
`UserId`,
`PathId`,
`Name`,
`Phone`
from `Agent`
where `Id`=?Id_1
limit 0,1;

  4.单表 单条 M 完整方法

             var res1 = await Conn
.Queryer<BodyFitRecord>()
.Where(it => it.Id == Guid.Parse("1fbd8a41-c75b-45c0-9186-016544284e2e"))
.QueryOneAsync();

    以 MySQL 为例,生成 SQL 如下:

 select *
from `BodyFitRecord`
where `Id`=?Id_1
limit 0,1;

四.API 多表连接-完整 方法 举例

  1.多表连接 单列 完整方法

             var res1 = await Conn
.Queryer(out Agent agent, out AgentInventoryRecord agentRecord)
.From(() => agent)
.InnerJoin(() => agentRecord)
.On(() => agent.Id == agentRecord.AgentId)
.Where(() => agent.AgentLevel == AgentLevel.DistiAgent)
.QueryOneAsync<string>(() => agent.Name);

    以 MySQL 为例,生成 SQL 如下:

 select agent.`Name`
from `Agent` as agent
inner join AgentInventoryRecord as agentRecord
on agent.`Id`=agentRecord.`AgentId`
where agent.`AgentLevel`=?AgentLevel_4
limit 0,1;

  2.多表连接 多列 完整方法

             var guid2 = Guid.Parse("544b9053-322e-4857-89a0-0165443dcbef");

             var res2 = await Conn
.Queryer(out Agent agent2, out AgentInventoryRecord record2)
.From(() => agent2)
.InnerJoin(() => record2)
.On(() => agent2.Id == record2.AgentId)
.Where(() => agent2.Id == guid2)
.QueryOneAsync(() => new AgentVM
{
nn = agent2.PathId,
yy = record2.Id,
xx = agent2.Id,
zz = agent2.Name,
mm = record2.LockedCount
});

    以 MySQL 为例,生成 SQL 如下:

 select     agent2.`PathId` as nn,
record2.`Id` as yy,
agent2.`Id` as xx,
agent2.`Name` as zz,
record2.`LockedCount` as mm
from `Agent` as agent2
inner join AgentInventoryRecord as record2
on agent2.`Id`=record2.`AgentId`
where agent2.`Id`=?Id_4
limit 0,1;

  3.多表连接 单条 M 完整方法

             var guid6 = Guid.Parse("544b9053-322e-4857-89a0-0165443dcbef");

             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
limit 0,1;

                                         蒙

                                    2018-12-13 14:35 周四

                                    2018-12-30 11:25 周日

                                    2019-02-24 17:03 周日

                                    2019-04-12 19:32 周五

MyDAL - .QueryOneAsync() 使用的更多相关文章

  1. MyDAL - 快速使用

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

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

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

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

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

  4. MyDAL - .Where() & .And() & .Or() 使用

    索引: 目录索引 一.API 列表 1.Where .Where(Func<M, bool> func) 如: .Where( it => (it.Prop1>=条件1 &am ...

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

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

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

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

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

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

  8. MyDAL - .UpdateAsync() 使用

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

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

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

随机推荐

  1. 从后台servlet中,获取jsp页面输入的值,来删除用户一行信息

    后台servlet设置 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws S ...

  2. K3数据字典备查

    select distinct f.FNumber as 系统代码, f.FName AS 系统名称,  d.FTableName AS 表名,d.FDescription AS 表说明,a.[nam ...

  3. Android之友盟多渠道打包与数据统计

    文章大纲 一.多渠道打包与数据统计介绍二.友盟实现多渠道打包实战三.友盟数据统计实战四.项目源码下载五.参考文章   一.多渠道打包与数据统计介绍   多渠道打包,相信很多同学都知道.在Android ...

  4. python 基础语法梳理(二)

    1.gevent使用 # -*- coding: utf-8 -*- import gevent import platform from gevent import subprocess def _ ...

  5. .NET 下 模拟数组越界

    前面一篇文章提到过 数组越界行为,虽然编译器为我们做了大量的检查工作让我们避免这些错误. 但是我觉得还是有必要模拟一下数组越界,感受一下这个错误. 那么对于.NET来说我们怎么来模拟数组越界呢? 一. ...

  6. 使用xUnit为.net core程序进行单元测试(1)

    导读 为什么要编写自动化测试程序(Automated Tests)? 可以频繁的进行测试 可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试. 肯定比人工测试要快. 可以更快速 ...

  7. [Abp vNext 源码分析] - 2. 模块系统的变化

    一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...

  8. 禁用 Chrome 的黑色模式/Dark Mode

    macOS Mojave 中引入了系统层面的黑色模式,Chrome 73 在应用中支行了这一模式,即系统设置为黑色模式时,Chrome 会自动适应切换到 Dark Mode. Chrome 跟随系统设 ...

  9. Python:黑板课爬虫闯关第三关

    第三关开始才算是进入正题了. 输入网址 http://www.heibanke.com/lesson/crawler_ex02/,直接跳转到了 http://www.heibanke.com/acco ...

  10. Java中实现多线程的四种方式

    Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Cal ...