如何在C#中使用Dapper ORM

對象關系映射(ORM)這個概念已經存在很長時間瞭,ORM的作用就是用來解決 編程領域的 object model 和關系數據庫中的 data model 的不匹配問題,Dapper 是一個開源的,輕量級的 ORM 框架,由 Stack Overflow 團隊開發,Dapper 和其他流行的ORM框架相比,最大的優點就是羽翼級。

Dapper在最初開發時就考慮到瞭性能和易用性,它支持在 事務,存儲過程 或者 批量插入時進行靜態或者動態的對象綁定。

使用 Visual Studio 安裝 Dapper ORM

要想瞭解 Dapper,從下面的步驟開始吧:

  • 打開 Visual Studio
  • 點擊 文件 -> 新建 -> 項目
  • 選擇 網站 -> ASP.Net Web Application
  • 給 web 項目指定一個名字
  • 然後選擇一個 空模板
  • 點擊 確定 生成 project

這樣我們就創建好瞭一個 ASP.Net web application 項目

如果你已經安裝瞭 NuGet,你可以通過 NuGet 去安裝 Dapper,做法就是在 解決方案窗口 下的 Project 上右鍵選擇 Manage NuGet Package … 並且找到 Dapper,然後點擊安裝開啟這個安裝過程,一旦 Dapper 被成功安裝,你就可以愉快的玩起來瞭哈。

使用 Dapper ORM 進行增刪查改

接下來我用 Dapper 寫一些簡單的 CURD 語句來操作數據庫,考慮如下的 IDG 數據庫,包含瞭一個 Author 表,表的字段如下:

  • ID
  • FirstName
  • LastName

在使用Dapper時,你需要針對 數據庫表 創建一個簡單的實體類(POCO class),下面定義瞭 Author 實體對應 IDB 數據庫的 Author 表。

 public class Author
 {
  public int Id { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
 }

使用 Dapper 的 Query() 擴展方法,可以實現對數據庫的查詢然後將數據填充到你的 object model 中,下面方法的作用就是從 Author 表中查詢所有的數據,然後存儲到內存中,最後返回一個集合給調用方。

 public List<Author> ReadAll()
 {
   using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“AdventureWorks”].ConnectionString))
   {
    return db.Query<Author>
    (“Select * From Author”).ToList();
   }
 }

對瞭,為瞭能夠使用上 Dapper 的擴展方法,你需要在代碼文件的頂部引入 Dapper 命名空間,如下圖:

下面的方法展示瞭如何從 Author table 表中查詢指定的記錄。

 public Author Find(int id) 
 {
  using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))
  {
   return db.Query<Author>(“Select * From Author “ + 
   WHERE Id = @Id”, new { id }).SingleOrDefault();
  }
 }

Dapper 的 Execute() 方法可以實現對數據的新增,修改,刪除,此方法返回一個整數值,該值表示在執行查詢時受到的影響行數。

下面的方法展示瞭如何使用 Dapper 更新一條記錄。

 public int Update(Author author)
 {
  using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))
  {
   string sqlQuery ="UPDATE Author SET FirstName = @FirstName, " +
   “ LastName = @LastName “ + “WHERE Id = @Id”;
   int rowsAffected = db.Execute(sqlQuery, author);
   return rowsAffected;
  }
 }

正如上面代碼所述,Update 方法返回瞭一個受影響的行數,意味著這麼多的記錄被修改,上面這段代碼隻會有一條記錄被更新,所以說如果更新成功返回的就是 1。

在 Dapper ORM 中使用 存儲過程

為瞭能夠使用 Dapper 執行存儲過程,在調用 Query 或者 Execute 方法時需要手工指定一下 CommandType 類型,下面的例子展示瞭如何使用 Dapper 執行 存儲過程。

 public List<Author> Read()
 {
  using (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))
  {
   string readSp ="GetAllAuthors";
   return db.Query<Author>(readSp, commandType: CommandType.StoredProcedure).ToList();
  }
 }

Dapper 框架也是支持事務操作的,如果有必要的話可以使用事務,使用方式很簡單,你可以利用 BeginTransaction() 和 EndTransaction() 方法,其實和你使用 ADO.NET 的事務方式是一摸一樣的,將需要事務的語句代碼放置在 BeginTransaction 和 EndTransaction 之間即可。

Dapper ORM 真的是相當羽翼級 並且非常方便使用,它不會為你生成任何sql語句,在這種情況下還能夠非常便捷的將查詢結果映射到你的 POCO 對象上,最🐂👃的是,它的執行速度遠超 Entity Framework,實際上,能和原生的 ADO.Net 媲美。

以上就是如何在C#中使用Dapper ORM的詳細內容,更多關於C# 使用Dapper ORM的資料請關註WalkonNet其它相關文章!

推薦閱讀: