Dappers : 基于Dapper.net 扩展的Dao

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 10:08 点击:

用习惯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 { get; set; }
        public string Name { get; set; }
        public string OfficeType { get; set; }
        ......
 

 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

 \

作者“老杨随笔-重用与重构的艺术”
 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET&#160;GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1