Dapper.Contrib 可实现免手写 SQL 的高性能 CRUD,需安装 Dapper 和 Dapper.Contrib 包、引入命名空间、实体标记 [Table] 和 [Key] 特性,并调用 Get/GetAll/Insert/Update/Delete 等扩展方法。

直接用 Dapper.Contrib 就能绕过手写 SQL,实现接近原生 Dapper 性能的 CRUD 操作,关键在实体标记和方法调用——不复杂但容易忽略细节。
先通过 NuGet 安装两个包(缺一不可):
dotnet add package Dapperdotnet add package Dapper.Contrib代码中必须同时引入命名空间:
using Dapper;Dapper.Contrib 不靠约定猜表名或主键,而是依赖特性显式声明。最简配置示例如下:
[Table("Users")]<br>public class User<br>{<br> [Key]<br> public int Id { get; set; }<br> public string Name { get; set; }<br> public DateTime CreatedAt { get; set; }<br>}注意点:
[Table] 必须指定数据库表名,不能省略[Key] 标识主键字段,仅一个字段可用;若主键非自增或需手动赋值,可加 [ExplicitKey]
[Computed] 用于数据库计算列(如 GETDATE()),插入/更新时自动跳过所有方法都是 IDbConnection 的扩展,连接打开后即可调用:
connection.Get<user>(1)</user> → 等效 SELECT * FROM Users WHERE Id = @Id
connection.GetAll<user>()</user> → 返回 IEnumerable<user></user>
int newId = connection.Insert(new User { Name = "Alice" }); → 自增主键自动返回,非自增则返回影响行数connection.Update(user) 或 connection.Delete(user),都按 [Key] 字段匹配操作支持事务传参:connection.Insert(user, transaction),适合多步一致性操作。
批量插入、更新、删除也内置支持:
connection.Insert(new[] { u1, u2, u3 }) → 一次插入多条,返回主键数组connection.Update(new[] { u1, u2 }) → 按主键批量更新容易出错的地方:
[Table] 或 [Key] → 运行时报 InvalidOperationException: No key defined
Id 且未标 [Key] → 查不到、插不进Get<t>(id)</t> 但传入的是字符串或 Guid 类型 → 确保类型和数据库字段一致基本上就这些。
以上就是Dapper怎么使用Dapper.Contrib进行CRUD Dapper.Contrib快速操作指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号