如何在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其它相關文章!
推薦閱讀:
- C#中Dapper的使用教程
- 輕量級ORM框架Dapper應用支持操作函數和事物
- 輕量級ORM框架Dapper應用之實現CURD操作
- 輕量級ORM框架Dapper應用之實現In操作
- 輕量級ORM框架Dapper應用之返回多個結果集