C#怎么使用Dapper C#轻量级ORM框架Dapper的基本用法

月夜之吻
发布: 2025-11-14 16:44:46
原创
426人浏览过
Dapper是.NET轻量级ORM框架,通过扩展IDbConnection提供高效数据库操作。1. 使用NuGet安装Dapper包并引用命名空间;2. 手动创建SqlConnection并用using管理连接;3. 用Query<T>执行查询并将结果映射为对象;4. 支持参数化查询防止SQL注入;5. Execute方法执行增删改操作并返回影响行数;6. QueryFirstOrDefault获取单条数据,ExecuteScalar获取标量值;7. QueryMultiple支持多结果集读取;8. 多表关联可通过Query方法结合splitOn映射主从对象关系。核心在于简化原生SQL与对象映射。

c#怎么使用dapper c#轻量级orm框架dapper的基本用法

Dapper 是一个轻量级的 ORM(对象关系映射)框架,适用于 C# 和 .NET 环境。它通过扩展 IDbConnection 接口,提供了简洁高效的数据库操作方式,特别适合需要高性能和灵活 SQL 控制的场景。相比 Entity Framework,Dapper 更加简单直接,性能也更高。

1. 安装 Dapper

在项目中使用 Dapper,首先需要通过 NuGet 安装包:

Install-Package Dapper

安装完成后,你可以在代码中引用 Dapper 命名空间:

using Dapper;

2. 建立数据库连接

Dapper 不提供连接管理,你需要自己创建并管理数据库连接。以 SQL Server 为例:

using (var connection = new SqlConnection("Server=.;Database=TestDB;Integrated Security=true;"))
{
    connection.Open();
    // 执行 Dapper 操作
}
登录后复制

注意:推荐使用 using 语句确保连接正确释放。

3. 查询数据 - Query 方法

使用 Query<T> 方法可以将查询结果映射到指定类型。

假设有一个 User 表:

CREATE TABLE User (
    Id INT IDENTITY PRIMARY KEY,
    Name NVARCHAR(50),
    Email NVARCHAR(100)
);
登录后复制

对应的实体类:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
}
登录后复制

查询所有用户:

var users = connection.Query<User>("SELECT * FROM User");
foreach (var user in users)
{
    Console.WriteLine($"{user.Id}: {user.Name} - {user.Email}");
}
登录后复制

4. 带参数的查询

避免 SQL 注入,使用参数化查询:

var user = connection.Query<User>(
    "SELECT * FROM User WHERE Id = @Id", 
    new { Id = 1 });
登录后复制

多个参数也可以用匿名对象传入:

var result = connection.Query<User>(
    "SELECT * FROM User WHERE Name = @Name AND Email = @Email",
    new { Name = "张三", Email = "zhangsan@example.com" });
登录后复制

5. 执行增删改操作 - Execute

插入数据:

var sql = "INSERT INTO User (Name, Email) VALUES (@Name, @Email)";
var rowsAffected = connection.Execute(sql, new { Name = "李四", Email = "lisi@example.com" });
登录后复制

更新数据:

var sql = "UPDATE User SET Email = @Email WHERE Id = @Id";
var rowsAffected = connection.Execute(sql, new { Id = 1, Email = "newemail@example.com" });
登录后复制

删除数据:

var sql = "DELETE FROM User WHERE Id = @Id";
var rowsAffected = connection.Execute(sql, new { Id = 1 });
登录后复制

Execute 返回受影响的行数。

6. 查询单条数据或标量值

获取单个对象:

var user = connection.QueryFirstOrDefault<User>("SELECT * FROM User WHERE Id = @Id", new { Id = 1 });
登录后复制

如果没找到,返回 null(引用类型)或默认值。

查询标量值(如计数):

var count = connection.ExecuteScalar<int>("SELECT COUNT(*) FROM User");
登录后复制

7. 多结果集查询(Multiple Results)

一次执行返回多个结果集,提高性能:

var sql = @"
    SELECT * FROM User;
    SELECT * FROM Order WHERE UserId = @UserId;";
<p>using (var multi = connection.QueryMultiple(sql, new { UserId = 1 }))
{
var users = multi.Read<User>().ToList();
var orders = multi.Read<Order>().ToList();
}
登录后复制

8. 映射复杂对象(多表关联)

支持将多表查询结果映射到主从对象:

var sql = @"
    SELECT u.*, o.*
    FROM User u
    LEFT JOIN Order o ON u.Id = o.UserId";
<p>var lookup = new Dictionary<int, User>();</p><p>var result = connection.Query<User, Order, User>(sql, (user, order) =>
{
if (!lookup.TryGetValue(user.Id, out var usr))
{
usr = user;
usr.Orders = new List<Order>();
lookup.Add(usr.Id, usr);
}
if (order != null) usr.Orders.Add(order);
return usr;
}, splitOn: "Id");</p><p>var usersWithOrders = lookup.Values;
登录后复制

基本上就这些。Dapper 的核心就是简化 ADO.NET 操作,让你写原生 SQL 的同时,自动映射到对象,不复杂但容易忽略细节比如参数命名和 splitOn 的使用。

以上就是C#怎么使用Dapper C#轻量级ORM框架Dapper的基本用法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号