zoukankan      html  css  js  c++  java
  • MyDAL

    索引:

    目录索引

    一.API 列表

      1.Where

        .Where(Func<M, bool> func) 

          如: .Where( it => (it.Prop1>=条件1 && it.Prop2<=条件2) || it.Prop3==条件3 ) 此类写法,

            用在 Deleter/Updater/Queryer(单表) 中.

        .Where(Func<bool>)

          如: .Where( () => m1.PropX==条件1 || m2.PropY>条件2 && m3.PropZ<条件3 ) 此类写法,用在 Queryer(多表) 中.

      2.And

        .And(Func<M, bool> func)  .Where(Func<M, bool> func) .

        .And(Func<bool>)  .Where(Func<bool>) .

      3.Or

        .Or(Func<M, bool> func)  .Where(Func<M, bool> func) .

        .Or(Func<bool>)  .Where(Func<bool>) .

      注: where and or 三个 api 是可以组合使用的,我在这里将他们的关系 处理为 sql 中同样的用法,

        即一个 sql 查询中只可以点出一个where,但可以点出多个and 或 or

        如:  ...Where(xxx).And(yyy).Or(mmm).And(zzz)..... .

    二.使用举例

      1.删除数据

    1             var path = "~00-c-1-2-1-1-1-1-1-4-1-1-1-4-1-2-1-7";
    2             var level = 2;
    3             // where and
    4             var res3 = await Conn
    5                 .Deleter<Agent>()
    6                 .Where(it => it.PathId == path)
    7                 .And(it => it.AgentLevel == (AgentLevel)level)
    8                 .DeleteAsync();

         以 MySQL 为例,生成 SQL 如下:

    1 delete
    2 from `Agent`   
    3  where  `PathId`=?PathId_1   
    4       and  `AgentLevel`=?AgentLevel_2 ;

      2.更新数据

    1             var res8 = await Conn
    2                 .Updater<Agent>()
    3                 .Set(it => it.AgentLevel, AgentLevel.NewCustomer)
    4                 .Where(it => it.Id == Guid.Parse("0014f62d-2a96-4b5b-b4bd-01654438e3d4"))
    5                 .UpdateAsync();

        以 MySQL 为例,生成 SQL 如下:

    1 update `Agent`
    2 set `AgentLevel`=?AgentLevel_1    
    3  where  `Id`=?Id_2 ;

      3.单表 查询数据

    1             var guid4 = Guid.Parse("000cecd5-56dc-4085-804b-0165443bdf5d");
    2             var pathId4 = "~00-d-3-2-1-c-2-f-4-3-1-2-4";
    3             var level4 = AgentLevel.Customer;
    4             var res4 = await Conn
    5                 .Queryer<Agent>()
    6                 .Where(it => it.Id == guid4 && it.AgentLevel==level4  && it.PathId == pathId4)
    7                 .QueryListAsync();

        以 MySQL 为例,生成 SQL 如下:

    1 select *
    2 from `Agent`   
    3  where  (( `Id`=?Id_3  &&  `AgentLevel`=?AgentLevel_4 ) &&  `PathId`=?PathId_5 ) 
    4 order by `CreatedOn` desc ;

      4.多表连接 查询数据

    1             var res6 = await Conn
    2                 .Queryer(out Agent agent6, out AgentInventoryRecord record6)
    3                 .From(() => agent6)
    4                     .InnerJoin(() => record6)
    5                         .On(() => agent6.Id == record6.AgentId)
    6                 .Where(() => agent6.Id == guid6)
    7                 .QueryOneAsync<Agent>();

        以 MySQL 为例,生成 SQL 如下:

    1 select       agent6.`*` 
    2 from `Agent` as agent6 
    3      inner join  AgentInventoryRecord as record6
    4          on  agent6.`Id`=record6.`AgentId`   
    5  where  agent6.`Id`=?Id_4 
    6 order by agent6.`CreatedOn` desc ;

                                             蒙

                                        2018-11-18 16:32 周日

                                        2018-12-13 15:27 周四

                                        2018-12-30 11:15 周日

                                        2019-02-24 17:45 周日

                                        2019-04-12 18:04 周五

  • 相关阅读:
    C#扩展方法
    asp.net mvc获取http body中的json
    ASP.NET MVC 获取表单数据
    @Html.DropDownList()的四种用法及自定义DropDownList扩展

    MVC5+EF6入门完整教程6:Partial View
    Day3.13组件切换
    Day3.12组件中的data和methods
    Day3.11定义私有组件
    Day3.10组件定义方式三
  • 原文地址:https://www.cnblogs.com/Meng-NET/p/9978336.html
Copyright © 2011-2022 走看看