使用輕量級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 
相關文章
相關標籤/搜索