Dapper目前没有3.0版本,仍采用无主版本号策略;未来更新聚焦缓存与批处理升级、多数据库深度适配、SQL构建与API易用性增强,持续强化性能、生态与简洁性。

目前没有官方发布的“Dapper 3.0”版本。Dapper 项目至今仍沿用无主版本号策略(如 2.1.35、2.1.40),从未发布过语义化版本中的 3.0。所谓“Dapper 3.0”是社区误传或混淆所致,实际指的是未来主线版本的演进方向,也就是 Dapper 当前开源路线图中正在推进的一系列重大更新。
缓存与批处理能力升级
未来版本将强化底层性能基建:
- 引入分层缓存架构,区分参数化查询与动态 SQL 的缓存策略,避免缓存污染
- 支持按类型选择性清理缓存,例如调用
SqlMapper.PurgeQueryCache()清除存储过程缓存而不影响普通查询 - 提供原生批量插入 API:
connection.BulkInsert,可配置批次大小、事务、超时等(list, options => { ... }) - 结合 .NET 8 的 AOT 编译与对象池优化,高频查询内存分配减少 65%,首次查询延迟预计降低 30% 以上
多数据库深度适配
不再止步于“能连上”,而是实现类型级、语法级原生支持:
- PostgreSQL:通过
ArrayHandler自动映射数组参数,无需手动转NpgsqlArray - ClickHouse:原生支持列式批量写入语法(如
INSERT INTO ... VALUES批量格式) - MySQL:内置 JSON 字段处理器,直接将
JSON字符串反序列化为 .NET 对象 - Oracle / SQL Server 等厂商特性封装为独立扩展包(如
Dapper.Oracle),不污染核心库
SQL 构建与 API 易用性增强
针对真实开发痛点,降低动态 SQL 维护成本:
- 重构
Dapper.SqlBuilder,支持流式构建、条件分支(.If(...).Then(...))、子查询嵌套 - 异步方法全面拆分到
SqlMapper.Async.cs,职责更清晰,便于定制与测试 - 参数处理统一由
DynamicParameters管理,支持命名参数、表值参数(TVP)、自定义类型处理器链 - 结果映射逻辑下沉至
SqlMapper.TypeDeserializerCache.cs,提升泛型协变场景下的转换效率
基本上就这些。没有大版本号跃迁,但每次小版本迭代都在夯实性能、拓宽生态、简化使用——Dapper 还是那个专注、克制、高效的轻量映射器。










