【快速入门ORM框架之Dapper】大牛勿进系列
前言:dapper是什么?Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。
使用:在项目中nuget下载即可,dapper如何使用呢?它和EF不同,我们什么的配置都需要手写,连接配置,实体,上下文,这和ADO.NET有一点相似点。
实战:
配置Users表
1 2 3 4 5 6 7 8 9 | create database TextInfo USE TEXTINFO create table Users ( UserID INT IDENTITY(1,1) NOT NULL, UserName varchar(50) Null, Email [varchar](100) Null, [Address] [varchar](100) Null ) |
创建连接字符串
1 2 3 | <connectionStrings> <add name= "CnnhoRechargePlatformConnectionString" connectionString= "Data Source=DESKTOP-OEJGKOO;Initial Catalog=TextInfo;Integrated Security=True" /> </connectionStrings> |
IDbConnection说明
1 2 3 4 | //读取config中的字符串 string connstr = ConfigurationManager.ConnectionStrings[ "CnnhoRechargePlatformConnectionString" ].ToString(); //IDbConnection IDbConnection connection = new SqlConnection(connstr); |
我们都知道Sqlconnection继承了DbConnection,那我们再去DbConnection中一探究竟,发现DbConnection继承于IDbConnection,所以呢dapper就是通过这种方式进行了多数据的封装,dapper就是实现了这种接口支持多数据库的特性也就产生了!
Insert插入与InsertBulk
insert:
1 | var result = connection.Execute( "insert into Users values(@UserName,@Email,@Address)" , new { UserName = "zara" ,Email= "zaranet@163.com" ,Address= "上海浦东" }); |
在这里支持匿名对象传入进行插入,非常的人性化哈!你可以发现dapper我们又开始写sql了,没错,这个博主上面没有提到,我们从微软的高度封装中逃了出来?可以这么比喻!对吧。。
insertBulk:
既然是Bulk操作,那一定是批量操作了,我们就可以把这个匿名对象编程匿名对象集合,这样就OK了
1 2 3 4 5 6 7 8 | var userList = Enumerable.Range(0, 10).Select(i => new { Email = "zaranet@qq.com" , Address = "安徽" , UserName = "jack" }); var result = connection.Execute( "insert into Users values(@UserName,@Email,@Address)" ,userList); |
这样我们就插入了10个,这种操作为了demo,其道理也是非常得离谱。
Query(select)
为了查询我们定义一个UserModel
1 2 3 4 5 6 7 | public class User { public int UserID { get ; set ; } public string UserName { get ; set ; } public string Email { get ; set ; } public string Address { get ; set ; } } |
1 | var query = connection.Query<User>( "select * from Users where UserName = @userName" , new { UserName = "zara" }); |
Update(Edit)
这个操作和上面的几乎没什么差别就是改了下sql
1 | var query = connection.Query<User>( "update Users set UserName='zzh' where UserName = @UserName" , new { UserName = "zara" }); |
Delete
这个操作和上面也差不多,非常简单的哈。
1 | var query = connection.Query<User>( "delete * from Users where UserName = @UserName" , new { UserName = "zara" }); |
好了,希望你看完本片文章会让你对dapper有一个基本的认识,如果觉得写的可以话,点个赞吧!👍
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异