• MyDAL


    索引:

    目录索引

    一.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 周五

  • 相关阅读:
    架构设计
    git 常用命令
    C# 加载C++的dll
    windows 服务部署管理
    wpf 模板绑定控件属性
    golang开启module模式 go mod
    使用docker安装redis
    使用docker安装elasticsearch
    使用docker安装etcd
    使用docker安装mysql5.7
  • 原文地址:https://www.cnblogs.com/Meng-NET/p/10179385.html
Copyright © 2020-2023  润新知