C#面试题更新 2026-08-05

请描述在 C# 项目中,利用 Dapper 这一轻量级 ORM 框架执行数据库读写操作的具体步骤。

编码实现技术原理C#Dapper

考察说明

考查对 Dapper 基本用法的掌握程度,包括连接管理、查询执行与结果映射。

回答思路

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