新闻中心

ASP.NET Core怎么使用Dapper ASP.NET Core集成Dapper教程

2025-12-15
浏览次数:
返回列表
ASP.NET Core 本身不内置 ORM,但可集成轻量高性能的 Dapper,适用于手写 SQL、极致性能或复杂查询场景;需安装 Dapper 及对应数据库驱动,配置连接字符串并注册 IDbConnection 工厂服务,再在控制器中注入使用。

asp.net core怎么使用dapper asp.net core集成dapper教程

ASP.NET Core 本身不内置 ORM,但可以轻松集成轻量级高性能的 Dapper。它不替代 Entity Framework,而是适合需要手写 SQL、追求极致性能或已有复杂查询逻辑的场景。

安装 Dapper 和数据库驱动

Dapper 是一个 NuGet 包,本身不依赖特定数据库,需额外安装对应数据库的 ADO.NET 驱动(如 SQL Server 用 Microsoft.Data.SqlClient)。

  • 在项目中运行:dotnet add package Dapper
  • SQL Server:运行 dotnet add package Microsoft.Data.SqlClient
  • MySQL:用 Pomelo.EntityFrameworkCore.MySql(仅需驱动时可选 MySqlConnector
  • PostgreSQL:推荐 Npgsql

配置数据库连接字符串

appsettings.json 中添加连接字符串:

"ConnectionStrings": { "DefaultConnection": "Server=.;Database=MyAppDb;Trusted_Connection=true;" }

然后在 Program.cs(.NET 6+)中注册为服务:

builder.Services.AddSingletonstring>(builder.Configuration.GetConnectionString("DefaultConnection"));

封装 IDbConnection 工厂(推荐)

避免每次手动 new SqlConnection,建议注册一个工厂服务来创建连接:

晓象AI资讯阅读神器 晓象AI资讯阅读神器

晓象-AI时代的资讯阅读神器

晓象AI资讯阅读神器 72 查看详情 晓象AI资讯阅读神器

builder.Services.AddTransient(sp => { var connStr = sp.GetRequiredService(); return new SqlConnection(connStr); });

这样控制器或仓储中直接注入 IDbConnection,Dapper 就能自动使用它执行查询。

在 Controller 或 Service 中使用 Dapper

以获取用户列表为例(假设已建好 User 表):

public class UserController : ControllerBase
{
    private readonly IDbConnection _conn;
<pre class="brush:php;toolbar:false;">public UserController(IDbConnection conn) => _conn = conn;

[HttpGet]
public async Task<IActionResult> GetUsers()
{
    var users = await _conn.QueryAsync<User>("SELECT * FROM Users");
    return Ok(users);
}

}

注意:
QueryAsync 用于 SELECT 返回多行;
QuerySingleAsync 用于必须返回一行;
ExecuteAsync 用于 INSERT/UPDATE/DELETE;
– 参数化查询防注入:await _conn.QueryAsync("SELECT * FROM Users WHERE Id = @id", new { id = 123 });

基本上就这些。Dapper 集成 ASP.NET Core 不复杂但容易忽略连接生命周期管理——用 Transient + IDbConnection 工厂是最简洁稳妥的做法。

以上就是ASP.NET Core怎么使用Dapper ASP.NET Core集成Dapper教程的详细内容,更多请关注其它相关文章!


# 适用于  # 渭南网站建设方案外包  # 南沙区网站整站优化策略  # 达州德阳网站建设公司  # 沅江seo公司  # 太原商场短视频营销推广  # 外贸网站建设案例分析  # 网站如何做线上推广  # 营销推广别称叫什么呢英文  # 怎么自己做网站的优化  # 网站优化咨询x火15星服务  # 解决问题  # 中文网  # 相关文章  # mysql  # 已有  # 就能  # 是一个  # 数据库查询  # 如何使用  # 高性能  # red  # .net  # microsoft  # ai  # app  # json  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  Golang指针如何与map组合使用_Golang map指针组合实践  PHP中高效并行检查多链接状态的教程  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  Win11输入法不见了怎么办_Windows11恢复语言栏显示方法  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  UC浏览器官网入口2025最新 UC浏览器网页版正式地址  b站怎么看视频的弹幕数量_b站弹幕数量查看方法  快手极速版在线观看 官方网页版登录地址  Shopware订单对象中获取产品自定义字段的正确方法  AO3官方可用镜像 Archive of Our Own网页版最新入口  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  深入理解Go语言中的指针类型:以*string为例  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道  outlook中文官网入口地址 outlook官方中文版直达首页链接  抖音网页版怎么|直播|_抖音网页版开播操作指南  poki免费入口快捷访问 poki人气小游戏直接玩站点  深入理解J*aScript Promise异步执行与微任务队列  创客贴用户入口官网登录 创客贴网页版电脑版系统  使用J*aScript检测输入元素是否包含在特定类中  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  机器学习中对数变换预测结果的反向还原  Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  支付宝如何管理隐私设置_支付宝隐私保护的配置技巧  windows10怎么查看本机ip_windows10命令提示符ipconfig使用  jQuery Mask 插件中实现电话号码固定前导零的教程  新手怎么开始学化妆 零基础化妆入门教程  yy漫画网页版官方入口_yy漫画官网登录页面链接  FullCalendar 自定义按钮样式定制指南  J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案  J*aScript中管理异步API调用:确保操作顺序与数据一致性  cad如何更改注释性对象的比例_cad注释性比例调整方法  在Qt QML中通过Python字典动态更新TextEdit内容的教程  ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  将HTML动态表格多行数据保存到Google Sheet的教程  excel如何生成目录 excel一键生成工作表目录超链接  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】  抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  提升Kafka消费者健壮性:会话超时处理与消息处理语义  HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  Lar*el Excel导入时生成自定义递增ID的策略与实践  Linux如何排查内存不足OOME问题_LinuxOOM分析教程 

搜索