Dapper怎么在.NET 6 Minimal API中使用 Dapper集成Minimal API教程

2026-01-29 00:00:00 作者:煙雲
Dapper在.NET 6 Minimal API中可直接手动创建SqlConnection并用QueryAsync执行异步查询,无需注册IDbConnection;推荐安装Dapper和Microsoft.Data.SqlClient包,结合参数化SQL与using释放连接,或封装为Repository提升可维护性。

Dapper在.NET 6 Minimal API中的基本集成

Minimal API不依赖Startup或Program类的复杂配置,Dapper作为轻量级ORM,天然适配这种简洁风格。你不需要注册IDbConnection服务,只需在需要的地方手动创建连接(如SqlConnection),用Dapper扩展方法执行查询即可。

安装必要NuGet包

确保项目引用以下两个核心包:

  • Dapper(最新稳定版,如 v2.1.24)
  • Microsoft.Data.SqlClient(.NET 6+推荐,替代旧版System.Data.SqlClient)

命令行安装示例:

dotnet add package Dapper
dotnet add package Microsoft.Data.SqlClient

在Minimal API中直接使用Dapper查询

以一个获取用户列表的GET端点为例,直接在MapGet里写数据访问逻辑:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/users", async (HttpContext ctx) => { var connectionString = builder.Configuration.GetConnectionString("Default"); using var connection = new SqlConnection(connectionString); var users = await connection.QueryAsync("SELECT * FROM Users"); return Results.Ok(users); });

app.Run();

注意点:

  • 连接对象必须用using确保及时释放
  • 推荐用QueryAsync配合Results.Ok返回IResult,保持异步友好
  • SQL语句建议参数化,避免拼接字符串(例如:"WHERE Id = @id" + new { id = 123 })

进阶:封装Dapper访问逻辑提升可维护性

不建议所有API都内联SQL。可以提取为简单服务类,比如UserRepository

public class UserRepository
{
    private readonly string _connectionString;
    public UserRepository(IConfiguration config) =>
        _connectionString = config.GetConnectionString("Default");
public async Task> GetAllAsync() =>
    await using var c = new SqlConnection(_connectionString);
    return await c.QueryAsync("SELECT * FROM Users");

}

然后在Minimal API中注入并使用:

builder.Services.AddScoped();

// … 在MapGet中: app.MapGet("/users", async (UserRepository repo) => Results.Ok(awai

t repo.GetAllAsync()));

这样既保持Minimal API的简洁,又兼顾了分层和测试友好性。

基本上就这些。Dapper和Minimal API搭配起来很轻快,不用动辄引入EF Core或复杂DI配置,适合中小项目或需要精细控制SQL的场景。

猜你喜欢

联络方式:

400 9058 355

邮箱:8955556@qq.com

Q Q:8955556

微信二维码
在线咨询 拨打电话

电话

400 9058 355

微信二维码

微信二维码