Dapper是一种轻量级的ORM(对象关系映射)工具,它提供了高效且易于使用的方式来执行数据库操作。Dapper是由Stack Overflow团队开发并维护的,它的主要目标是提供比EF更快、更直接的方式访问数据库。Dapper的主要特点包括:基于纯ADO.NET而不是EF,因此性能更高支持多种数据库,如SQL Server、MySQL、Oracle等通过使用动态SQL和强类型参数,可以有效地减少代码量提供了多种简单易用的方法,在大多数情况下,只需一两行代码就可以完成常见的CRUD操作接下来,我们将详细介绍如何使用Dapper进行数据库操作。
一、安装Dapper:
Dapper可以通过NuGet包管理器安装。打开Visual Studio,选择“项目”菜单下的“管理NuGet程序包”,在搜索栏中输入“Dapper”,然后点击“安装”按钮即可。 你也可以手动在项目中添加以下引用:
【资料图】
using Dapper;using System.Data.SqlClient;View Code
二、连接数据库 在使用Dapper之前,我们需要先连接数据库。Dapper支持多种数据库,本文以SQL Server为例。 创建一个 SqlConnection 对象,然后使用该对象打开数据库连接。
string connectionString = "your connection string";using (var connection = new SqlConnection(connectionString)){ connection.Open(); // 这里执行数据库操作}View Code
三、执行查询操作 Dapper提供了多种方法来执行查询操作。其中,最常见的方法是 Query 和 QueryFirstOrDefault。 QueryQuery 方法返回一个包含查询结果的 IEnumerable
var products = connection.QueryView Code("SELECT * FROM Products");foreach (var product in products){ // 处理查询结果}
如果你需要使用参数化查询,可以像下面这样使用命名参数:
var products = connection.QueryView Code("SELECT * FROM Products WHERE CategoryId = @CategoryId", new { CategoryId = 1 });foreach (var product in products){ // 处理查询结果}
或者使用匿名对象:
var parameters = new { CategoryId = 1 };var products = connection.QueryView Code QueryFirstOrDefault("SELECT * FROM Products WHERE CategoryId = @CategoryId", parameters);foreach (var product in products){ // 处理查询结果}
QueryFirstOrDefault 方法返回一个单个实体对象,如果未找到任何记录,则返回 null。
var product = connection.QueryFirstOrDefaultView Code("SELECT * FROM Products WHERE Id = @Id", new { Id = 1 });if (product != null){ // 处理查询结果}
QueryMultiple如果你需要一次性执行多个查询语句,可以使用 QueryMultiple 方法。该方法返回一个 SqlMapper.GridReader 对象,通过该对象可以依次获取各个查询语句的结果。 以下示例中,我们首先执行两个查询语句,获取商品和商品分类的数据。然后,我们使用 Read 方法分别获取这两个结果集,并将它们转换为实体对象列表。
var multi = connection.QueryMultiple("SELECT * FROM Products; SELECT * FROM Categories");var products = multi.ReadView Code().ToList();var categories = multi.Read ().ToList();
四、执行插入、更新和删除操作 Dapper还提供了多种方法来执行插入、更新和删除操作。其中,最常见的方法是 Execute 和 ExecuteScalar。 Execute Execute 方法返回受影响行数。
var rowsAffected = connection.Execute("INSERT INTO Products (Name, Price) VALUES (@Name, @Price)", new { Name = "Product 1", Price = 9.99m });View Code
你也可以使用命名参数或匿名对象:
var parameters = new { Name = "Product 1", Price = 9.99m };var rowsAffected = connection.Execute("INSERT INTO Products (Name, Price) VALUES (@Name, @Price)", parameters);View Code
ExecuteScalarExecuteScalar方法返回一个单一的值,通常用于执行插入操作并返回插入记录的主键。
var productId = connection.ExecuteScalarView Code("INSERT INTO Products (Name, Price) VALUES (@Name, @Price); SELECT CAST(SCOPE_IDENTITY() as int)", new { Name = "Product 2", Price = 19.99m });
与 Query 和 Execute 方法一样,你也可以使用命名参数或匿名对象。对象映射Dapper支持自动将查询结果映射到实体对象上。在使用Dapper时,我们需要确保查询语句中的列名与实体类的属性名相对应。 以下是一个简单的示例:
public class Product{ public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; }}// 查询商品数据var products = connection.QueryView Code("SELECT Id, Name, Price FROM Products");
注意,如果查询语句中的列名与实体类的属性名不匹配,则无法自动映射。此时,你需要手动指定映射关系。 以下是一个手动映射的示例:
public class Product{ public int ProductId { get; set; } public string ProductName { get; set; } public decimal ProductPrice { get; set; }}// 查询商品数据var products = connection.QueryView Code("SELECT Id as ProductId, Name as ProductName, Price as ProductPrice FROM Products");
总结Dapper是一种简单易用、高效的ORM工具,它提供了多种方法来执行数据库操作,能够满足大多数开发人员的需求。在使用Dapper时,我们需要先连接数据库,然后使用 Query、QueryFirstOrDefault、QueryMultiple、Execute 或 ExecuteScalar 等方法执行相应的数据库 操作。同时,Dapper还支持自动将查询结果映射到实体对象上,从而进一步简化了代码编写。
关键词:
关于我们 广告服务 手机版 投诉文章:435 226 40@qq.com
Copyright (C) 1999-2020 www.baiduer.com.cn 爱好者日报网 版权所有 联系网站:435 226 40@qq.com