阅读本文你的收获
- 了解Dapper的适用场景
- 了解Dapper的本质其实是一些扩展方法
- 学会使用Dapper的扩展Domel来实现泛型仓储
一、什么是Dapper?
Dapper是一个轻量级的ORM(对象关系映射)工具,用于简化数据库操作。它和Entity Framework 不同,它属于轻量级的,并且是半自动的。
Dapper的优势:
- Dapper非常小巧,只有一个帮助类,完全开源。
- Dapper以性能优异著称。一般的ORM框架,性能和直接写原生的SQL语句比都差不少,但是Dapper执行SQL语句的性能非常好。
Dapper的使用场景:
-
快速的数据访问:Dapper提供了简单、快速的方法来执行数据库查询操作,可以有效地减少代码量和开发时间。
-
大数据量的操作:Dapper在处理大数据量的操作时表现出色,相比其他ORM工具,它具有更低的内存占用和更高的性能。
-
原始SQL查询:Dapper允许开发人员编写和执行原生SQL查询,可以灵活地处理复杂的查询需求。
-
存储过程的调用:Dapper支持存储过程的调用,并提供了简便的方式来执行存储过程并获取返回结果。
总之,Dapper适用于需要快速、高性能的数据访问的场景,尤其适用于对数据库操作要求较高的应用程序。
二、Dapper的本质
Dapper库对IDbConnection接口扩展了许多方法,使得与数据库交互变得更加方便和高效。下面是Dapper中定义的Query方法,它是一个扩展方法,扩展的目标类型是IDbConnection。
public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = null, CommandType? commandType = null)
以下是Dapper扩展的一些常用方法(包括但不限于):
Query方法:用于执行SQL查询并返回结果集。QueryFirstOrDefault方法:用于执行SQL查询并返回结果集中的第一行记录,如果结果集为空则返回默认值。QuerySingleOrDefault方法:用于执行SQL查询并返回唯一一条记录,如果结果集为空则返回默认值。Execute方法:用于执行SQL语句并返回受影响的行数。ExecuteScalar方法:用于执行SQL语句并返回受影响的行数。
这些方法还有与之对应的异步方法(Async结尾的方法)。
此外,Dapper还提供了一些类型用于处理与参数有关的操作,例如:DynamicParameters类:用于动态创建参数。该类的Add方法:用于向参数集合中添加参数,而Get方法:用于获取参数的值。
三、Dapper的入门案例
开发环境:
平台版本是:.NET6
开发框架:ASP.NET Core WebApi
开发工具:Visual Studio 2022
数据库版本:MS SQL Server 2014
3.1 安装Dapper
通过NuGet包管理器安装Dapper

3.2 用Dapper执行SQL语句
以下案例用Dapper实现查询用户是否存在。
//头上引用命名空间
using Dapper;
//获取连接字符串(本例中是硬编码的,最好写在appsettings.json中)
private const string CONNECT_STRING = "Data Source=.;Initial Catalog=shoppingdb1;User ID=sa;Password=123abc!";
/// <summary>
/// 检查登录的账号和密码
/// </summary>
/// <param name="UserName"></param>
/// <param name="Password"></param>
/// <returns></returns>
public bool Login(string userName, string password)
{
using(var conn = new SqlConnection(CONNECT_STRING))
{
string sql = "select * from [dbo].[User] where UserName=@UserName and Password=@Password";
//Query<>方法用户执行select语句,获取结果集

本文介绍了Dapper,一个轻量级的ORM工具,以其性能优势和简化数据库操作而闻名。文章详细讲解了Dapper的适用场景、本质、扩展方法和如何在.NETCoreWebApi中实现仓储模式,以及Dapper的扩展库如Dapper.FluentMap和Dommel的使用。

5873

被折叠的 条评论
为什么被折叠?



