Dappers : 基于Dapper.net 扩展的Dao - Part II

用习惯Linq2Sql的盆友肯定对 from... where....select 这种inline式,强类型的 写法大爱不已.

可惜我不是,对于表关联, 这种写法及其最终sql 分析都非常 egg疼, 于是乎Dapper作者博客里就有不少将原Linq2sql 转 sql dapper的心得.

 

但是,我完全同意: 在一般简单查询,Lambda写起来更顺手,更美观,更强类型. (Lambda解析转SQL语句,请看这里)

所以我的Dappers 里 又加了个接口. 所有这些,都是面向sql, 面向跨oracle / sql server 的.  

 

1. 如果彻底不写SQL, 数据库的基本信息还是需要的 

[System.Data.Linq.Mapping.Table(Name =  " SYS_OFFICE ")]
     public  class MyOffice
    {
        [System.Data.Linq.Mapping.Column(Name =  " OfficeId ", IsPrimaryKey =  true)]
         public  string Id {  getset; }
         public  string Name {  getset; }
         public  string OfficeType {  getset; }
        ......

 

 2. Query<T>(whereExpression)

var user = dao.Query<MyUser>(u =>  u.UserCode.StartsWith("chen"));//此时用到上述mapping,否则无需描述mapping

var user1 = dao.Query<MyUser,MyOffice>("select t.* from SYS_USER t inner join SYS_Office t1 on t.OfficeId=t1.Id",
 (u,o) => u.UserCode.StartsWith("chen") && o.Name.Contains("办公室"));

var user2 = dao.Query<IDictionary,MyUser, MyOffice>("select t1.UserCode,t1.Name from SYS_USER t1 inner join SYS_Office t2 on t1.OfficeId=t2.Id",
 (d,u, o) => u.UserCode.StartsWith("chen") && o.Name.Length>4);

 

 

3.UnitTest result

 

 

 

转载于:https://www.cnblogs.com/crabo/archive/2011/09/30/crabo_Dappers2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值