Dapper 嵌套对象查询
我有这样一个一对一关系的表结构:User->UserInfo
User:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /// <summary> /// 用户 /// </summary> [Serializable] public partial class SysUser { public SysUser() {} #region Model /// <summary> /// 用户编号 /// </summary> public string SysId { get ; set ; } /// <summary> /// 用户名 /// </summary> public string UserName { get ; set ; } /// <summary> /// 密码 /// </summary> public string UserPwd { get ; set ; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get ; set ; } /// <summary> /// 最后一次登录时间 /// </summary> public DateTime? LastLogin { get ; set ; } /// <summary> /// 该条记录的操作情况,用于记录最后一次谁在什么时候创建、修改了该记录 /// </summary> public string RecordStatus { get ; set ; } /// <summary> /// 用户的详细信息 /// </summary> public SysUserInfo UserInfo { get ; set ; } #endregion Model public IEnumerable<SysRole> Roles { get ; set ; } } |
UserInfo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | /// <summary> /// 用户信息 /// </summary> [Serializable] public partial class SysUserInfo { public SysUserInfo() {} #region Model /// <summary> /// 用户编号 /// </summary> public string SysId { get ; set ; } /// <summary> /// 真实名字 /// </summary> public string RealName { get ; set ; } /// <summary> /// 职位 /// </summary> public string Title { get ; set ; } /// <summary> /// 性别 /// </summary> public bool Sex { get ; set ; } /// <summary> /// 手机 /// </summary> public string Phone { get ; set ; } /// <summary> /// 传真 /// </summary> public string Fax { get ; set ; } /// <summary> /// 邮箱 /// </summary> public string Email { get ; set ; } /// <summary> /// qq /// </summary> public string QQ { get ; set ; } /// <summary> /// 地址 /// </summary> public string Address { get ; set ; } #endregion Model } |
查询的具体Sql:
1 2 3 4 | select u.CreateTime,u.LastLogin,u.RecordStatus,u.SysId,u.UserName,u.UserPwd,ui.SysId, ui.Address,ui.Email,ui.Fax,ui.Phone,ui.QQ,ui.RealName,ui.Sex,ui.Title from Sys_User u inner join Sys_UserInfo ui on u.SysId=ui.SysId inner join Sys_UserRole ur on u.SysId=ur.UserId inner join Sys_Role r on ur.RoleId = r.SysId |
要想把UserInfo的数据填充到User中,需要用下面的方式实现:
connection.Query<SysUser, SysUserInfo, SysUser>(
Constant.ProcGetList,
(u, ui) =>
{
u.UserInfo = ui;
return u;
},
p,splitOn:"SysId",
commandType: CommandType.StoredProcedure);
此处要注意的就是splitOn,他其它是分割子对象的属性。
作者:
吉桂昕
出处: http://www.cnblogs.com/jiguixin
我的新浪微博: http://weibo.com/jiguixin
本文版权归【吉桂昕】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
出处: http://www.cnblogs.com/jiguixin
我的新浪微博: http://weibo.com/jiguixin
本文版权归【吉桂昕】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)