以SQLserver为例的Dapper详细讲解

这篇具有很好参考价值的文章主要介绍了以SQLserver为例的Dapper详细讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Dapper是一种轻量级的ORM(对象关系映射)工具,它提供了高效且易于使用的方式来执行数据库操作。
Dapper是由Stack Overflow团队开发并维护的,它的主要目标是提供比EF更快、更直接的方式访问数据库。
Dapper的主要特点包括:
基于纯ADO.NET而不是EF,因此性能更高
支持多种数据库,如SQL Server、MySQL、Oracle等
通过使用动态SQL和强类型参数,可以有效地减少代码量
提供了多种简单易用的方法,在大多数情况下,只需一两行代码就可以完成常见的CRUD操作
接下来,我们将详细介绍如何使用Dapper进行数据库操作。

一、安装Dapper:

       Dapper可以通过NuGet包管理器安装。打开Visual Studio,选择“项目”菜单下的“管理NuGet程序包”,在搜索栏中输入“Dapper”,然后点击“安装”按钮即可。
       你也可以手动在项目中添加以下引用:

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
using Dapper;
using System.Data.SqlClient;
View Code

二、连接数据库
     在使用Dapper之前,我们需要先连接数据库。Dapper支持多种数据库,本文以SQL Server为例。
     创建一个 SqlConnection 对象,然后使用该对象打开数据库连接。

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
string connectionString = "your connection string";
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    // 这里执行数据库操作
}
View Code

三、执行查询操作
     Dapper提供了多种方法来执行查询操作。其中,最常见的方法是 Query 和 QueryFirstOrDefault。
     Query
     Query 方法返回一个包含查询结果的 IEnumerable<T>(T为查询结果映射的类型)。

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var products = connection.Query<Product>("SELECT * FROM Products");
foreach (var product in products)
{
    // 处理查询结果
}
View Code

     如果你需要使用参数化查询,可以像下面这样使用命名参数:

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var products = connection.Query<Product>("SELECT * FROM Products WHERE CategoryId = @CategoryId", new { CategoryId = 1 });
foreach (var product in products)
{
    // 处理查询结果
}
View Code

     或者使用匿名对象:

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var parameters = new { CategoryId = 1 };
var products = connection.Query<Product>("SELECT * FROM Products WHERE CategoryId = @CategoryId", parameters);
foreach (var product in products)
{
    // 处理查询结果
}
View Code

    QueryFirstOrDefault 

    QueryFirstOrDefault 方法返回一个单个实体对象,如果未找到任何记录,则返回 null。

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var product = connection.QueryFirstOrDefault<Product>("SELECT * FROM Products WHERE Id = @Id", new { Id = 1 });
if (product != null)
{
    // 处理查询结果
}
View Code

    QueryMultiple
    如果你需要一次性执行多个查询语句,可以使用 QueryMultiple 方法。该方法返回一个 SqlMapper.GridReader 对象,通过该对象可以依次获取各个查询语句的结果。
    以下示例中,我们首先执行两个查询语句,获取商品和商品分类的数据。然后,我们使用 Read 方法分别获取这两个结果集,并将它们转换为实体对象列表。

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var multi = connection.QueryMultiple("SELECT * FROM Products; SELECT * FROM Categories");
var products = multi.Read<Product>().ToList();
var categories = multi.Read<Category>().ToList();
View Code

四、执行插入、更新和删除操作
      Dapper还提供了多种方法来执行插入、更新和删除操作。其中,最常见的方法是 Execute 和 ExecuteScalar。
      Execute
      Execute 方法返回受影响行数。

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var rowsAffected = connection.Execute("INSERT INTO Products (Name, Price) VALUES (@Name, @Price)", new { Name = "Product 1", Price = 9.99m });
View Code

     你也可以使用命名参数或匿名对象:

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var parameters = new { Name = "Product 1", Price = 9.99m };
var rowsAffected = connection.Execute("INSERT INTO Products (Name, Price) VALUES (@Name, @Price)", parameters);
View Code


     ExecuteScalar
     ExecuteScalar方法返回一个单一的值,通常用于执行插入操作并返回插入记录的主键。

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
var productId = connection.ExecuteScalar<int>("INSERT INTO Products (Name, Price) VALUES (@Name, @Price); SELECT CAST(SCOPE_IDENTITY() as int)", new { Name = "Product 2", Price = 19.99m });
View Code

    与 Query 和 Execute 方法一样,你也可以使用命名参数或匿名对象。
对象映射
    Dapper支持自动将查询结果映射到实体对象上。在使用Dapper时,我们需要确保查询语句中的列名与实体类的属性名相对应。
    以下是一个简单的示例:

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

// 查询商品数据
var products = connection.Query<Product>("SELECT Id, Name, Price FROM Products");
View Code

     注意,如果查询语句中的列名与实体类的属性名不匹配,则无法自动映射。此时,你需要手动指定映射关系。
     以下是一个手动映射的示例:

以SQLserver为例的Dapper详细讲解以SQLserver为例的Dapper详细讲解
public class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public decimal ProductPrice { get; set; }
}

// 查询商品数据
var products = connection.Query<Product>("SELECT Id as ProductId, Name as ProductName, Price as ProductPrice FROM Products");
View Code

 总结
      Dapper是一种简单易用、高效的ORM工具,它提供了多种方法来执行数据库操作,能够满足大多数开发人员的需求。在使用Dapper时,我们需要先连接数据库,然后使用 Query、QueryFirstOrDefault、QueryMultiple、Execute 或 ExecuteScalar 等方法执行相应的数据库          操作。同时,Dapper还支持自动将查询结果映射到实体对象上,从而进一步简化了代码编写。

 文章来源地址https://www.toymoban.com/news/detail-423604.html

到了这里,关于以SQLserver为例的Dapper详细讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ODBC连接数据库以SQLserver为例

    ODBC是open database connect的缩写,意思是开放式数据库连接 首先要下载数据库!! 配置数据库(以SQL server为例) 首先打开SSMS(SQL server management studio) 右键所连接的数据库引擎,点击属性 点击安全性,选择SQL sesrver 和Windows的身份验证模式(要有密码) (如果刚开始下载SQL

    2023年04月23日
    浏览(49)
  • Microsoft Defender SmartScreen 阻止了无法识别的应用启动,Windows已阻止此软件和无法验证发布者两个问题的解决方法(以腾讯云服务器为例的三种保姆级图文解决方法)

    提示:转到日常小技巧专栏,观看更多内容! 点我直达–日常小技巧专栏 在使用腾讯云服务器2019server的时候(这个安全提示好像是win7和win10的特色),运行一些网上下载的软件的时候有安全提示: 强行进行本次运行(本次可以运行,但是之后可能还是会有弹窗) 信任单个

    2024年02月03日
    浏览(91)
  • STM32定时中断具体配置讲解(定时1s触发中断为例)(有待更新)

            这里介绍一下STM32定时中断。         有时候我们需要用到定时或者计数功能,这时候就需要用到定时器了,通俗地讲就是我们可以通过调节它的本身主频率来得到我们需要的频率大小,进而设定时间,也可以配置外部计数的模式使用外部计数。         这里以

    2024年02月04日
    浏览(62)
  • SQLServer下载安装详细图解

    1.首先是到下载网页 点此访问 学习使用的话,express版本就够用啦 2.打开下载的文件 3.更改下载位置,不推荐下载到系统盘,我这边是下载到了F盘 4.然后安装,需要稍等一小会儿 之后弹出如下界面 5.然后 6.同意许可,下一步 ​ 7.检查更新这个根据个人需求,我这边保持不变

    2023年04月10日
    浏览(37)
  • Navicat链接sqlserver详细步骤

    sqlserver2008(作者是2008版),Navicat 打开SQLServer配置管理器 点击SQL Server 网络配置、把协议保持启用,如果默认已启用就不用管; 把IP地址里的IPAll里的TCP端口改为1433(SQL Server的端口是1433,Mysql的是3306); 检查SQL Native Client11.0的配置,确认协议也在开启,端口为1433; 最好防

    2024年02月16日
    浏览(32)
  • Python进行文本处理分析与词云生成——以三国演义为例(含代码讲解)

             在Python中处理文本数据是一种常见的任务,这需要使用到多种字符串操作和数据结构。本文将详细解读如何调用jieba、wordcloud以及 matplotlib这些库进行文本处理分析与词云制作。          在我们导入所需要的库之前我们需要先在pycharm中下载并安装库,步骤如下:

    2024年02月04日
    浏览(39)
  • 以optee的sign_encrypt.py为例讲解argparse命令解析模块

    Argparse是 Python 标准库中推荐的命令行解析模块。该模块会自动生成提示信息,且在用户给程序传入非法参数时报错。 刚好最近在看optee的sign_encrypt.py,以它为例介绍python的argparse命令解析模块。 脚本参见:optee_os/scripts/sign_encrypt.py at master · OP-TEE/optee_os · GitHub ArgumentParser 对象

    2024年02月10日
    浏览(48)
  • LLM各层参数详细分析(以LLaMA为例)

    网上大多分析LLM参数的文章都比较粗粒度,对于LLM的精确部署不太友好,在这里记录一下分析LLM参数的过程。 首先看QKV。先上transformer原文 也就是说,当h(heads) = 1时,在默认情况下, W i Q W_i^Q W i Q ​ 、 W i K W_i^K W i K ​ 、 W i V W_i^V W i V ​ 都是2维方阵,方阵维度是 d m o

    2024年02月07日
    浏览(41)
  • 【SqlServer2022服务器安装详细图文教程和SSMS数据库工具下载安装】

    官网地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 推荐安装微软官方SQL SERVER连接工具SQL Server Management Studio (SSMS),当然也可以使用Navicat SSMS下载:https://learn.microsoft.com/zh-CN/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16 向下翻可以选择下载的语言

    2024年02月08日
    浏览(47)
  • Elasticsearch 集群分片出现 unassigned 其中一种原因详细还原

    🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客  🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。  🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 背景 问题复原 问题排查和定位

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包