当前位置: 移动技术网 > IT编程>开发语言>.net > MyDAL - .Where() & .And() & .Or() 使用

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

2018年11月20日  | 移动技术网IT编程  | 我要评论

八分休止符,叶社绘师御三家,麻痹怒气维基百科

索引:

一.api 列表

  1.where

    .where(func<m, bool> func) 

      如: .where( it => (it.prop1>=条件1 && it.prop2<=条件2) || it.prop3==条件3 ) 此类写法,用在 deleter/updater/selecter 中.

    .where(func<bool>)

      如: .where( () => m1.propx==条件1 || m2.propy>条件2 && m3.propz<条件3 ) 此类写法,用在 joiner 中.

  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();

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

    生成 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                 .selecter<agent>()
6                 .where(it => it.id == guid4 && it.agentlevel==level4  && it.pathid == pathid4)
7                 .listasync();

    生成 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                 .joiner<agent, agentinventoryrecord>(out var agent6, out var record6)
3                 .from(() => agent6)
4                     .innerjoin(() => record6)
5                         .on(() => agent6.id == record6.agentid)
6                 .where(() => agent6.id == guid6)
7                 .firstordefaultasync<agent>();

    生成的 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 周日

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网