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

    项目背景

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

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

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

   1、首先根据数据库表定义实体对象, 这个工作完全可以使用T4、Nvelocity或者RazorEngine 写一个代码生成器根据数据库表对象自动生成数据库表实体对象。这里我自己根据表写了一个对象

  

 View Code

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

 View Code

   Dapper的优势

 1、Dapper是一个轻型的ORM类

2、 Dapper语法简单,如果你喜欢写原始的sql,你一定喜欢Dapper。同时团队人员也很容易上手

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

4、多数据库切换方便

    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更多特性

1、支持动态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);
复制代码
2、支持批量插入

 View Code
3、支持多表关联
 View Code
4、支持多结果查询
 View Code
5 支持存储过程
 View Code
6、参数自动绑定
1 new {A = 1, B = "b"} // A will be mapped to the param @A, B to the param @B 
原文地址:https://www.cnblogs.com/zcm123/p/9540575.html