MyDAL - .ListAsync() 使用

匿名 (未验证) 提交于 2019-12-02 22:06:11

索引:

商业开发实战总结

一.API 列表

  .ListAsync()

  .ListAsync<M>()

    如: .ListAsync<AgentInventoryRecord>() , 用于 单表/多表连接

  .ListAsync<VM>()

    如:单表 查询.

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

    如:单表 单列 查询.

    或者:

      .ListAsync(agent => new AgentVM



单表 多列 查询.

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

    如:

      ... ...

多表连接 单列 查询.

    或者:








多表连接 多列 查询.

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

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

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

    生成的 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.ListAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.CreatedOn >= date, 4                 it => new AlipayPaymentRecordVM 5                 { 6                     TotalAmount = it.TotalAmount, 7                     Description = it.Description 8                 });

    生成的 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.ListAsync<AlipayPaymentRecord, AlipayPaymentRecordVM>(it => it.CreatedOn >= date);

    生成 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.ListAsync<AlipayPaymentRecord>(it => it.CreatedOn >= date);

    生成 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                 .ListAsync(it => it.Name);

    生成 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                 .ListAsync(agent => new AgentVM 5                 { 6                     XXXX = agent.Name, 7                     YYYY = agent.PathId 8                 });

    生成 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                 .ListAsync<AgentVM>();

    生成 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                 .ListAsync();

    生成 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                 .ListAsync(() => agent1.CreatedOn);

    生成 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                 .ListAsync(() => new AgentVM  8                 {  9                     nn = agent12.PathId, 10                     yy = record12.Id, 11                     xx = agent12.Id, 12                     zz = agent12.Name, 13                     mm = record12.LockedCount 14                 });

    生成 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                 .ListAsync<AgentInventoryRecord>();

    生成 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 周三

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!