Dapper实战:从基础到高级操作详解

需积分: 9 4 下载量 117 浏览量 更新于2024-09-07 收藏 130KB DOC 举报
“Dapper使用示例教程,涵盖了数据库操作中的增删改查、批量插入、多语句执行和事务操作等内容。” Dapper是一个轻量级的.NET数据访问框架,它提供了一种简单而高效的SQL查询接口。在这个示例教程中,我们将深入探讨如何使用Dapper进行各种数据库操作。 1. 连接管理 Dapper自动处理数据库连接的状态。例如,当你创建一个新的`SqlConnection`对象并使用Dapper执行SQL命令时,如果连接尚未打开,Dapper会在执行查询前自动打开它。这样可以简化开发者的工作,不必手动管理连接的生命周期。 2. 插入(Insert) 在Dapper中,插入操作非常直观。你可以直接将包含待插入值的对象传递给`Execute`方法,Dapper会自动匹配属性与SQL语句中的占位符。例如,对于一个名为`Book`的类,其中包含`Name`属性,插入语句可以写为: ```csharp string query = "INSERT INTO Book (Name) VALUES (@name)"; conn.Execute(query, book); ``` 或者,如果你不想使用对象,也可以直接传入参数: ```csharp string query = "INSERT INTO Book (Name) VALUES (@name)"; conn.Execute(query, new { @name = book.name }); ``` 3. 更新(Update) 更新操作同样简单,只需要提供一个包含更新字段和对应值的对象,或者直接传入参数: ```csharp string query = "UPDATE Book SET Name = @name WHERE id = @id"; conn.Execute(query, book); ``` 4. 删除(Delete) 删除操作与更新类似,使用`Execute`方法和参数化的SQL语句: ```csharp string query = "DELETE FROM Book WHERE id = @id"; conn.Execute(query, book); // 或者 conn.Execute(query, new { id = id }); ``` 5. 选择(Select) 查询数据时,可以返回一个对象列表或单个对象。无参数查询时,返回所有记录: ```csharp string query = "SELECT * FROM Book"; var books = conn.Query<Book>(query).ToList(); ``` 而带有参数的查询,可以返回单条记录: ```csharp string query = "SELECT * FROM Book WHERE id = @id"; var book = conn.Query<Book>(query, new { id = id }).SingleOrDefault(); ``` 对于传统的SQL IN查询,Dapper提供了参数化的方法来避免SQL注入风险: ```csharp int[] ids = new int[] { 1, 2, 3 }; conn.Query<Users>("SELECT * FROM Userss WHERE s.id IN (@ids)", new { ids = ids }); // 或者 conn.Query<Users>("SELECT * FROM Userss WHERE s.id IN (@ids)", new { ids = IDs.ToArray() }); ``` 6. 批量插入(Bulk Insert) Dapper支持批量插入,可以通过`ExecuteMany`扩展方法实现。例如,如果有多个`Book`对象的集合,可以一次性插入到数据库: ```csharp List<Book> books = GetBooksList(); conn.Execute("INSERT INTO Book (Name) VALUES (@name)", books); ``` 这里,Dapper会自动处理批处理,提高性能。 7. 多语句执行 当需要执行多个SQL语句时,Dapper允许你在同一个事务中执行,确保数据的一致性。例如: ```csharp using (var tran = conn.BeginTransaction()) { try { conn.Execute("INSERT INTO Book ...", book1); conn.Execute("UPDATE Book ...", book2); tran.Commit(); } catch { tran.Rollback(); } } ``` 8. 事务操作(Transactions) 在Dapper中,你可以通过`BeginTransaction`方法启动一个新的数据库事务。在事务中执行的所有操作将在提交事务后保存,如果发生错误,则可以回滚事务以撤销更改。 总结,Dapper以其简洁的API和高效的性能在.NET开发中得到了广泛的应用。这个示例教程提供的各种操作方法,为开发者提供了全面了解和使用Dapper的基础。通过学习这些示例,你可以快速上手并在项目中有效地利用Dapper进行数据库操作。