如何使用Dapper使用Inner join的操作
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍如何使用Dapper使用Inner join的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、新创建两张表:Users表和Product表Users表定义
千家信息网最后更新 2025年11月07日如何使用Dapper使用Inner join的操作
这篇文章主要介绍如何使用Dapper使用Inner join的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、新创建两张表:Users表和Product表
Users表定义如下:
CREATE TABLE [dbo].[Users]( [UserId] [int] IDENTITY(1,1) NOT NULL, [UserName] [varchar](16) NULL, [Email] [varchar](32) NULL, [Address] [varchar](128) NULL,PRIMARY KEY CLUSTERED ( [UserId] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GO
Product表定义如下:
CREATE TABLE [dbo].[Product]( [ProductId] [int] IDENTITY(1,1) NOT NULL, [ProductName] [varchar](16) NULL, [Price] [decimal](8, 2) NULL, [UserId] [int] NULL,PRIMARY KEY CLUSTERED ( [ProductId] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GO
查看Users表和Product表会发现两张表通过UserId外键关联起来,然后我们需要在Product实体类上面进行修改,添加一个User的实体属性,修改后的代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DapperApplicationJoin.Model{ public class Product { public int ProductId { get; set; } public string ProductName { get; set; } public User UserOwner { get; set; } public string Price { get; set; } }}User实体类定义如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DapperApplicationJoin.Model{ public class User { public int UserId { get; set; } public string UserName { get; set; } public string Email { get; set; } public string Address { get; set; } }}2、Main方法定义如下
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Configuration;using System.Data;using System.Data.SqlClient;using Dapper;using DapperApplicationJoin.Model;namespace DapperApplicationJoin{ class Program { static void Main(string[] args) { string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString; using (IDbConnection connection = new SqlConnection(conn)) { string sql = @" select p.ProductName,p.Price,u.UserName,u.UserId,u.Email,u.Address from Product as p join Users as u on p.UserId=u.UserId; "; var result = connection.Query(sql, (product, users) => { product.UserOwner = users; return product; }, splitOn: "UserName"); var query = connection.Query(sql); // 输出 使用动态类型 query.AsList().ForEach(p => { Console.WriteLine("产品名称:" + p.ProductName + ",产品价格:" + p.Price + ",用户姓名:" + p.UserName); }); } Console.ReadKey(); } }} splitOn参数的含义:代码中的splitOn是UserName,运行时,会从查询结果所有字段列表的最后一个字段开始进行匹配,一直到找到UserName这个字段(大小写忽略无所谓),找到的第一个UserName字段匹配的Product类的UserName属性,那么从UserName到最后一个字段都属于Product,UserName以前的字段都被影射到Users,通过 (T, P) => {return T; },把两个类的实例解析出来。就实现了两个数据的解析,要不然dapper也不知道哪个是Product哪个是Users的属性。
除了可以使用上面的方法以外,还可以使用直接查询SQL语句的方式:
using (IDbConnection connection = new SqlConnection(conn)){ string sql = @" select p.ProductName,p.Price,u.UserName,u.UserId,u.Email,u.Address from Product as p join Users as u on p.UserId=u.UserId; "; var query = connection.Query(sql); // 输出 使用动态类型 query.AsList().ForEach(p => { Console.WriteLine("产品名称:" + p.ProductName + ",产品价格:" + p.Price + ",用户姓名:" + p.UserName); });}运行结果如下:

以上是"如何使用Dapper使用Inner join的操作"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
字段
产品
实体
属性
两个
代码
价格
内容
动态
名称
姓名
方法
用户
篇文章
类型
结果
查询
输出
运行
无所谓
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
农行数据库使用方法
维斯易联打印服务器usb损坏
软件开发全栈化
防范网络安全问题
线下购物商城软件开发
滁州回收服务器价格
商品化会计核算软件开发水平
图片服务器解决方案
nodejs进程查询数据库
党员如何抓好网络安全
phpcms数据库密码
农村小学网络安全教育
河南服务器硬盘销售
宣传网络安全项目推荐理由
含两级的数据库
航测服务器
网易版我的世界服务器奖励箱
dell服务器维修常州
高校网络安全保障体系建设
体验服服务器怎么弄
sql数据库没有编辑器
万方数据库论文查询有用吗
数据库所有查询结果
祥林网络技术有限公司
linux企业服务器的构建
山东曦阳网络技术
无限传感网络技术有什么特点
女生网络安全小知识
mc服务器为什么不能倒多少岩浆
魔兽世界镀金服务器