当前位置: 代码迷 >> 综合 >> Dapper - 微型 ORM 之王 (C#.NET)
  详细解决方案

Dapper - 微型 ORM 之王 (C#.NET)

热度:31   发布时间:2023-12-21 22:17:35.0

ORM

直接将数据库与 C# 对象映射的对象关係映射器。

有许多可用的 ORM 工具。其中之一是 Dapper。Dapper 被称为 ORM 之王。

以下是 Dapper 的主要功能:

  1. 速度快,性能快。

  2. 更少的代码行。

  3. 对象映射器。

  4. 静态对象绑定。

  5. 动态对象绑定。

  6. 轻松处理 SQL 查询。

  7. 易于处理存储过程。

  8. 直接对 IDBConnection 类进行操作,该类提供平滑性并直接对数据库运行查询,而不是像我们在 EF 和 Web Page is Unavailable 中那样使用各种对像传递数据。

  9. 多查询支持。

  10. 支持存储过程。

  11. 批量数据插入功能。

  12. Dapper 还允许基于多个输入获取多个数据。

为什么选择Dapper

  • Dapper 是第二快的 ORM。

  • 直接使用 IDBConnection 对象执行 CRUD 操作。

  • 提供通过数据库查询静态和动态数据。

  • 获取简单或複杂数据类型的通用结果。

  • Dapper 允许一次存储大量数据。

如何安装Dapper

Dapper 有两种安装方式:

1.DapperMappingFileForC#4.5.cs。

将此 SqlMapperAsync.cs 文件添加到您的项目并开始使用 Dapper 功能。

SqlMapperAsync.cs 取决于你使用的 .Net 框架。

2. NuGet 包管理器。

在 Visual Studio 中,创建一个新的控制台项目,然后在解决方案资源管理器中右键单击引用并选择管理 NuGet 包管理器并蒐索 Dapper 并使用 NuGet 包管理器控制台命令获取 Nugget 包管理器“install-package dapper”,然后这个将 Dapper 安装到你的项目中。

Dapper 的工作原理

“ Dapper 主要包括三个步骤”

步骤1

使用连接字符串创建 IDBConnection 对象。

第2步

编写一个查询并将其存储在一个普通的字符串变量中。

第 3 步

调用 db.execute() 并传递查询就完成了。

我们将在下面的示例中探讨许多其他方法。对于此示例,我有一个名为“ContactDB”的数据库并包含一个名为 Contacts 的表。使用 Dapper 让我们在这个联繫人表上执行 CRUD 操作。

?

创建一个控制台应用程序并安装 Dapper 并包含 Dapper 的命名空间。

例 1

让我们首先获取所有数据并将其打印到控制台上。

步骤1

创建一个 IDbConnection 类的对象和一个新的 SqlConnection 实例。

?

SqlServerConnString 是一个连接字符串名称,您可以在控制台应用程序的 app.config 中编写它。

第2步

编写一个查询并将其存储到一个字符串中。

?

第 3 步

在 db 实例上触发查询并将通用返回类型转换为联繫人列表。

?

您已经成功地从联繫人表中检索了所有数据,只需使用这三个简单的步骤将这些数据填充到您需要的任何地方。

将整个列表打印到 Windows 窗体或 WPF 的网格视图上,或将整个数据列表传递给任何外部 WCF。

出于演示目的,我将仅将此数据打印到控制台上。

?

示例 2

现在让我们将数据插入到联繫人表中。这也包括相同的三个步骤。

步骤1

创建 IDbConnection 类的对象和 SqlConnection 的新实例。

?

第2步

?在这裡,我们包括两个查询来获取最后插入的联繫人表 id。

第 3 步

现在在 db 实例上触发查询,对于返回类型,我们将得到一个值,这将是一个 int。因此,将其存储到一个 int 变量中,并通过查询传递联繫人对象,如下所示。

?

再次在这三个简单的步骤中,数据将被插入到数据库中。

示例 3

现在让我们通过在 where 子句中传递一个 id 从数据库联繫人表中获取单个数据量。

步骤1

创建 IDbConnection 类的对象和 SqlConnection 的新实例。

?

第2步

?

第 3 步

现在在 db 实例上触发查询,对于返回类型,我们将得到一个值,这将是一个联繫人。因此,将其存储到联繫人对像中。

?

同样在这三个简单的步骤中,将使用 id 从数据库中获取数据。

?

注意:同理我们可以更新和删除数据库的记录。

我们甚至可以使用 db.Execute()。

db.query 和 db.execute 之间的主要区别在于,在 db.query 中,我们得到一个我们想要的返回值,因为它是一个泛型方法,而 db.execute 不是一个泛型方法,所以它总是返回一个 int。

使用高级 Dapper

  • 我们可能需要处理多个表,例如一次查询两个以上的表或根据外键获取数据。

  • 我们可以在 Dapper 中一次访问多个表,这也非常流畅。

  • 传递对象列表,Dapper 本身会将插入识别为批量插入。

  • 根据各种参数获取数据,Dapper 会自动将数组转换为 CSV 并在对象列表中返回所有内容。

示例 4

假设我还有一个要调用的表,如下所示:

?

我们将使用相同的联繫人 ID 作为联繫人表的主键和地址表的外键,一起对两个表执行 CRUD 操作。

现在让我们通过一个 id 从数据库联繫表和数据库地址表中获取多个数据。

步骤1

为 IDbConnection 类和 SqlConnection 的新实例创建一个对象。

第2步

现在为多个查询创建一个字符串。

?第 3 步

现在在 db 实例上触发查询,如下所示:

?

大功告成,您只需使用三个步骤就成功地从多个表中检索了多条记录。

?

翻译自:Dapper - King of Micro ORM (C#.NET)

相关.NET项目请登录51aspx.com

Asp.net core 支付宝扫码支付实例源码,交易支付,Asp.net源码|- 51Aspx.com一、源码描述支付宝PC网站支付、扫码支付Demo,实现支付、支付同步回调、支付异步通知、订单查询、退款、退款查询、订单关闭、扫码支付功能。采用支付宝服务端SDK:Alipay.AopSdk.Core二、功能介绍支付宝PC网站支付、扫码支付Demo,实现支付、支付同步回调、支付异步通知、订单查询、退款、退款查询、订单关闭、扫码支付功能。采用支付宝服务端SDK:Alipay.AopSdk.Core三、注意事项1、开发环境为VisualStudio2019,无数据库。http://www.51aspx.com/code/CCASPNETCOREZFBSMDEMO