「Dapper」一個高效率輕量型 ORM 套件
一、前言
Dapper 是一個輕量化 ORM 的套件,可以寫出類似於 ADO.NET 的簡化語法,但保有 ORM 的特性,而相較於 Code First,Dapper 較為輕巧,因此筆者會依照專案的特性使用。
二、開發環境
- 整合開發環境:Visual Studio 2019
- 語言:C#
- .net framework:4.6.2
三、範例資料庫
圖、範例資料庫
四、讀取
範例皆使用參數型方式操作資料庫,避免Sql Injection問題。
圖、範例程式碼
- 原始碼(C#)
var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var sb = new SqlConnection(conn))
{
var data = sb.Query<Test>($"SELECT [a1],[a2] FROM [Test] where [Seq] = @Seq", new { Seq = 1 }).ToList();
return data;
}
圖、執行結果
五、新增
範例皆使用參數型方式操作資料庫,避免Sql Injection問題。
圖、範例程式碼
- 原始碼(C#)
var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var sb = new SqlConnection(conn))
{
var items = new List<Test> {
new Test { a1 = "a1", a2 = "a2" },
new Test { a1 = "a11", a2 = "a22" },
};
return sb.Execute($"INSERT INTO [Test] ([a1] ,[a2]) VALUES (@a1, @a2)", items);
}
圖、執行結果
六、修改
範例皆使用參數型方式操作資料庫,避免Sql Injection問題。
圖、範例程式碼
- 原始碼(C#)
var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var sb = new SqlConnection(conn))
{
return sb.Execute($"UPDATE [Test] SET [a1] = @a1 WHERE [a2] = @a2", new { a1="a111", a2="a2" });
}
圖、執行結果
七、刪除
範例皆使用參數型方式操作資料庫,避免Sql Injection問題。
圖、範例程式碼
- 原始碼(C#)
var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var sb = new SqlConnection(conn))
{
return sb.Execute($"DELETE FROM [dbo].[Test] where [Seq] > @Seq", new { Seq = "2" });
}
圖、執行結果
八、相關連結
- 使用「Visual Studio 2019」建置一個有 Mvc 和 Web Api 架構的網站
- 使用「CsvHelper」讀取、寫入 CSV 檔案
- 好用的資料庫管理工具「SQL Server 資料庫專案」
- 「NLog」與「Sql Server」資料庫的完美搭配
- 使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作
- 使用「Entity Framework Tools」建立資料庫關聯模型
- https://weitechshare.blogspot.com/2020/12/code-first.html
- 使用「SqlBulkCopy」進行大量資料寫入
- 「linqkit」動態組裝 LINQ 條件的好用套件
- 「Dapper」一個高效率輕量型 ORM 套件
留言
張貼留言