Introduction to Dapper
Introduction to Dapper
https://jdaniel1987.github.io/Dapper
我已经把它翻译成了中文博客的格式,保留了所有的代码示例和结构,你可以直接拿去发布:
博客文章草稿
标题: Dapper 简介
作者: Jaime Daniel Delgado Ortega
发布时间: 2024年9月8日
阅读时间: 2 分钟
Dapper 简介
Dapper 是一个用于 .NET 的微 ORM(对象关系映射器),它为 Entity Framework 等传统 ORM 提供了一种轻量级且快速的替代方案。Dapper 并不将类完全映射到数据库表,而是擅长简化 SQL 查询执行并将结果直接映射到 C# 对象。
Dapper 的优势
- 性能: Dapper 速度极快,几乎可以媲美直接使用 ADO.NET 的速度。
- 简单性: 只需极少的配置,您就可以将 Dapper 快速集成到任何 .NET 项目中。
- 灵活性: Dapper 允许您编写原始 SQL 查询,让您完全掌控数据库交互。
使用示例
1. 安装 NuGet 包
通过安装 NuGet 包将 Dapper 添加到您的项目中。有多种方法可以做到这一点,请选择最适合您的一种。例如,在 Visual Studio 中:右键单击您的项目 -> 管理 NuGet 包... -> 浏览,搜索“Dapper”,选中它并点击安装。
[图片占位:NuGet 包管理器安装 Dapper 的截图]
(建议在此处插入一张显示在 Visual Studio 中搜索并安装 Dapper 包的截图)
2. 配置数据库访问
您只需要数据库的连接字符串。虽然如果连接字符串设置在 appsettings.json 中,您可以使用 IConfiguration 来检索它,但为了本示例,我们将把它定义为仓库中的一个全局变量:
private static string _connectionString = "{YourDbConnectionString}";
3. 使用 Dapper 查询数据库
获取一条记录
public async Task<Mark> GetMark(int id)
{
string sql = @"SELECT [Id]
,[Name]
,[Surname]
,[Score]
FROM [Marks]
WHERE Id = @id";
var db = new SqlConnection(_connectionString);
var mark = await db.QueryFirstAsync<Mark>(sql, new { id });
return mark;
}
获取多条记录
public async Task<IReadOnlyCollection<Mark>> GetMarks()
{
var sql = @"SELECT [Id]
,[Name]
,[Surname]
,[Score]
FROM [Marks]
ORDER BY Surname";
using var db = new SqlConnection(_connectionString);
var marks = await db.QueryAsync<Mark>(sql);
return marks.ToImmutableArray();
}
添加一条记录
public async Task<int> CreateMark(Mark mark)
{
var sql = @"INSERT INTO [Marks] ([Name], [Surname], [Score])
OUTPUT INSERTED.Id
VALUES (@name, @surname, @mark);";
var db = new SqlConnection(_connectionString);
var id = await db.QuerySingleAsync<int>(sql, new
{
name = mark.Name,
surname = mark.Surname,
mark = mark.Score,
});
return id;
}
更新一条记录
public async Task UpdateMark(Mark mark, int id)
{
string sql = @"UPDATE [Marks]
SET
[Name] = @name,
[Surname] = @surname,
[Score] = @mark
WHERE
[Id] = @id";
var db = new SqlConnection(_connectionString);
await db.QueryAsync(sql, new
{
id,
name = mark.Name,
surname = mark.Surname,
mark = mark.Score,
});
}
删除一条记录
public async Task DeleteMark(int id)
{
string sql = @"DELETE FROM [Marks]
WHERE [Id] = @id";
var db = new SqlConnection(_connectionString);
await db.QueryAsync(sql, new { id });
}
示例项目链接
标签: #C# #.NET #ORM #Dapper #DataAccess #Databases #Performance
(本文根据 CC BY 4.0 许可协议发布)
出处:http://www.cnblogs.com/lightsong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

浙公网安备 33010602011771号