MyDAL - .QueryListAsync() 使用

it2022-05-05  127

索引:

目录索引

一.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. 单表 单列 多条 便捷方法 

1 var res7 = await Conn.QueryListAsync<Agent, string>(it => it.Name.StartsWith(""), it => it.Name);

    以 MySQL 为例,生成 SQL 如下:

1 select `Name` 2 from `Agent` 3 where `Name` like ?Name_1;

  2. 单表 多列 多条 便捷方法

1        var date = DateTime.Parse("2018-08-20"); 2 3 var res3 = await Conn.QueryListAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.CreatedOn >= date, 4 it => new AlipayPaymentRecordVM 5 { 6 TotalAmount = it.TotalAmount, 7 Description = it.Description 8 });

    以 MySQL 为例,生成 SQL 如下:

1 select `TotalAmount` as TotalAmount, 2     `Description` as Description 3 from `AlipayPaymentRecord` 4 where `CreatedOn`>=?CreatedOn_1;

  3. 单表 VM 多条 便捷方法

1 var date = DateTime.Parse("2018-08-20"); 2 3 var res2 = await Conn.QueryListAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.CreatedOn >= date);

    以 MySQL 为例,生成 SQL 如下:

1 select `Id`, 2 `CreatedOn`, 3 `TotalAmount`, 4 `Description`, 5 `CanceledOn` 6 from `AlipayPaymentRecord` 7 where `CreatedOn`>=?CreatedOn_1;

  4. 单表 M 多条 便捷方法

1 var date = DateTime.Parse("2018-08-20"); 2 3 var res1 = await Conn.QueryListAsync<AlipayPaymentRecord>(it => it.CreatedOn >= date);

    以 MySQL 为例,生成 SQL 如下:

1 select * 2 from `AlipayPaymentRecord` 3 where `CreatedOn`>=?CreatedOn_1;

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

  1. 单表 单列 多条 完整方法

1 var res2 = await Conn 2 .Queryer<Agent>() 3 .Where(it => it.AgentLevel == AgentLevel.DistiAgent) 4 .QueryListAsync(it => it.Name);

    以 MySQL 为例,生成 SQL 如下:

1 select `Name` 2 from `Agent` 3 where `AgentLevel`=?AgentLevel_1;

   2.单表 多列 多条 完整方法

1 var res5 = await Conn 2 .Queryer<Agent>() 3 .Where(it => it.AgentLevel == AgentLevel.DistiAgent) 4 .QueryListAsync(agent => new AgentVM 5 { 6 XXXX = agent.Name, 7 YYYY = agent.PathId 8 });

    以 MySQL 为例,生成 SQL 如下:

1 select `Name` as XXXX, 2 `PathId` as YYYY 3 from `Agent` 4 where `AgentLevel`=?AgentLevel_1;

  3.单表 VM 多条 完整方法

1 var testQ5 = new WhereTestModel 2 { 3 CreatedOn = DateTime.Now.AddDays(-30), 4 StartTime = WhereTest.CreatedOn, 5 EndTime = DateTime.Now, 6 AgentLevelXX = AgentLevel.DistiAgent, 7 ContainStr = "~00-d-3-1-" 8 }; 9 var res5 = await Conn 10 .Queryer<Agent>() 11 .Where(it => it.CreatedOn >= testQ5.StartTime) 12 .QueryListAsync<AgentVM>();

    以 MySQL 为例,生成 SQL 如下:

1 select `Id`, 2 `CreatedOn`, 3 `UserId`, 4 `PathId`, 5 `Name`, 6 `Phone` 7 from `Agent` 8 where `CreatedOn`>=?CreatedOn_1;

  4. 单表 M 多条 完整方法

1 var start = WhereTest.CreatedOn.AddDays(-10); 2 3 var res2 = await Conn 4 .Queryer<BodyFitRecord>() 5 .Where(it => it.CreatedOn >= start) 6 .QueryListAsync();

    以 MySQL 为例,生成 SQL 如下:

1 select * 2 from `BodyFitRecord` 3 where `CreatedOn`>=?CreatedOn_1;

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

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

1 var res1 = await Conn 2 .Queryer(out Agent agent1, out AgentInventoryRecord record1) 3 .From(() => agent1) 4 .InnerJoin(() => record1) 5 .On(() => agent1.Id == record1.AgentId) 6 .Where(() => agent1.AgentLevel == AgentLevel.DistiAgent) 7 .QueryListAsync(() => agent1.CreatedOn);

    以 MySQL 为例,生成 SQL 如下:

1 select agent1.`CreatedOn` 2 from `Agent` as agent1 3 inner join AgentInventoryRecord as record1 4 on agent1.`Id`=record1.`AgentId` 5 where agent1.`AgentLevel`=?AgentLevel_4;

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

1 var res12 = await Conn 2 .Queryer(out Agent agent12, out AgentInventoryRecord record12) 3 .From(() => agent12) 4 .InnerJoin(() => record12) 5 .On(() => agent12.Id == record12.AgentId) 6 .Where(() => record12.CreatedOn >= WhereTest.CreatedOn) 7 .QueryListAsync(() => new AgentVM 8 { 9 nn = agent12.PathId, 10 yy = record12.Id, 11 xx = agent12.Id, 12 zz = agent12.Name, 13 mm = record12.LockedCount 14 });

    以 MySQL 为例,生成 SQL 如下:

1 select agent12.`PathId` as nn, 2 record12.`Id` as yy, 3 agent12.`Id` as xx, 4 agent12.`Name` as zz, 5 record12.`LockedCount` as mm 6 from `Agent` as agent12 7 inner join AgentInventoryRecord as record12 8 on agent12.`Id`=record12.`AgentId` 9 where record12.`CreatedOn`>=?CreatedOn_4;

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

1 var res1 = await Conn 2 .Queryer(out Agent agent1, out AgentInventoryRecord record1) 3 .From(() => agent1) 4 .InnerJoin(() => record1) 5 .On(() => agent1.Id == record1.AgentId) 6 .Where(() => agent1.CreatedOn >= WhereTest.CreatedOn.AddDays(-60)) 7 .QueryListAsync<AgentInventoryRecord>();

    以 MySQL 为例,生成 SQL 如下:

1 select record1.`*` 2 from `Agent` as agent1 3 inner join AgentInventoryRecord as record1 4 on agent1.`Id`=record1.`AgentId` 5 where agent1.`CreatedOn`>=?CreatedOn_4;

 

 

 

 

                                         蒙

                                    2018-12-26 15:25 周三

                                    2018-12-30 11:30 周日

                                    2019-04-12 23:29 周五

 

转载于:https://www.cnblogs.com/Meng-NET/p/10179385.html


最新回复(0)