使用轻量级ORM Dapper进行增删改查

    项目背景mysql

     前一段时间,开始作一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET、微软的EF、NH等。再跟经理讨论后,经理强调不要用Ef,NH作ORM,后期的sql优化很差作,公司也没有人对EF,Nh 等orm优化比较熟悉的。强调说的,咱们的项目要作的得简单,可使用ADO.NET 写原始的sql。但我本身仍是喜欢ORM的,它能够提升数据访问层的开发。有一天,在订阅张善友 doNet跨平台微信公众号里,看到Dapper的推荐。了解以后,我本身喜欢喜欢Dapper,能够知足我这个项目的经理的要求,同时Dapper 对数据库的访问能作到Ado.net同样快。git

  下面的连接是Dapper 在github的地址  https://github.com/StackExchange/dapper-dot-net。github

  使用 Dapper 进行简单增删改查示例sql

   一、首先根据数据库表定义实体对象, 这个工做彻底可使用T四、Nvelocity或者RazorEngine 写一个代码生成器根据数据库表对象自动生成数据库表实体对象。这里我本身根据表写了一个对象数据库

  

  View Code

  2. 在DAL层就可使用实体对象传参 或者做为返回值微信

 

  View Code

   Dapper的优点app

 一、Dapper是一个轻型的ORM类ide

二、 Dapper语法简单,若是你喜欢写原始的sql,你必定喜欢Dapper。同时团队人员也很容易上手优化

三、Dapper 速度快,速度接近ADO.NET访问数据库的效率。spa

四、多数据库切换方便

    public int UpdateUserRoleByRoleId(UserRoleDbEntity model)
        {
            int affecgtRow = 0;
            string sql = @"UPDATE  `userrole`
                            SET  `AuthorityValue` = @AuthorityValue,
                                `AuthorityDescription` = @AuthorityDescription
                            WHERE `RoleId` = @RoleId;";
            using (IDbConnection conn = new MySqlConnection(GlobalVariablesManager.G_Strconn))
            {
                affecgtRow = conn.Execute(sql, model);
            }
            return affecgtRow;
        }

这里mysql若是要切换为Sql Server ,只要修改连接  MySqlConnection---》SqlConnection。

 

Dapper更多特性

一、支持动态dynamic绑定

复制代码
 1 var rows = connection.Query("select 1 A, 2 B union all select 3, 4");
 2 
 3 ((int)rows[0].A)
 4    .IsEqualTo(1);
 5 
 6 ((int)rows[0].B)
 7    .IsEqualTo(2);
 8 
 9 ((int)rows[1].A)
10    .IsEqualTo(3);
11 
12 ((int)rows[1].B)
13     .IsEqualTo(4);
复制代码

 

二、支持批量插入
 
  View Code
三、支持多表关联
  View Code
四、支持多结果查询
  View Code
5 支持存储过程
  View Code
六、参数自动绑定
1 new {A = 1, B = "b"} // A will be mapped to the param @A, B to the param @B 
相关文章
相关标签/搜索