请描述在 C# 项目中,利用 Dapper 这一轻量级 ORM 框架执行数据库读写操作的具体步骤。
考察说明
考查对 Dapper 基本用法的掌握程度,包括连接管理、查询执行与结果映射。
回答思路
- 【回答框架 1】Dapper 是扩展 IDbConnection 的轻量级对象映射库,核心用法是通过 SqlConnection 实例调用其扩展方法,如 Query、Execute 等。它不管理连接生命周期,连接需自行创建和释放,通常配合 using 语句确保资源释放。
- 【回答框架 2】查询操作使用 Query<T> 方法,传入 SQL 语句和参数(可选匿名对象),返回 IEnumerable<T>。Dapper 通过列名与实体属性名匹配进行映射,支持动态类型 dynamic 或匿名类型。
- 【回答框架 3】写操作使用 Execute 方法,返回受影响行数,适用于 INSERT、UPDATE、DELETE。参数化查询能有效防止 SQL 注入,推荐使用匿名对象或 IDictionary 传参。
- 【回答框架 4】支持存储过程调用,可在 CommandType 中指定为 StoredProcedure,参数需与存储过程参数匹配。还支持事务,通过 IDbTransaction 参数开启,保证多语句原子性。
- 【回答框架 5】性能上 Dapper 会缓存查询生成的相关信息,但每次调用仍会动态生成 IL 或构建映射,对于复杂查询可结合 Dapper.Contrib 或纯 ADO.NET 优化,必要时使用 Dapper 的 AOT 模式或源生成器。
- 【关键点 1】Dapper 是扩展 IDbConnection 的轻量级 ORM,不管理连接生命周期。
- 【关键点 2】查询用 Query<T>,写操作用 Execute,均支持参数化查询。
- 【关键点 3】结果映射基于列名与属性名匹配,支持动态类型。
- 【关键点 4】支持存储过程与事务,通过 CommandType 和 IDbTransaction 实现。
- 【关键点 5】参数化查询是防 SQL 注入的核心措施。