Dapper 嵌套对象查询

我有这样一个一对一关系的表结构:User->UserInfo

User:

 /// 
	/// 用户
	/// 
	[Serializable]
	public partial class SysUser
	{
		public SysUser()
		{}
		#region Model
		/// 
		/// 用户编号
		/// 
		public string SysId { get; set; }

		/// 
		/// 用户名
		/// 
		public string UserName { get; set; }

		/// 
		/// 密码
		/// 
		public string UserPwd { get; set; }

		/// 
		/// 创建时间
		/// 
		public DateTime? CreateTime { get; set; }

		/// 
		/// 最后一次登录时间
		/// 
		public DateTime? LastLogin { get; set; }

		/// 
		/// 该条记录的操作情况,用于记录最后一次谁在什么时候创建、修改了该记录
		/// 
		public string RecordStatus { get; set; }

        /// 
        /// 用户的详细信息
        /// 
        public SysUserInfo UserInfo { get; set; }
         
		#endregion Model

        public IEnumerable Roles { get; set; }
	}

 

UserInfo:

/// 
	/// 用户信息
	/// 
	[Serializable]
	public partial class SysUserInfo
	{
		public SysUserInfo()
		{}
		#region Model
		/// 
		/// 用户编号
		/// 
		public string SysId { get; set; }

		/// 
		/// 真实名字
		/// 
		public string RealName { get; set; }

		/// 
		/// 职位
		/// 
		public string Title { get; set; }

		/// 
		/// 性别
		/// 
		public bool Sex { get; set; }

		/// 
		/// 手机
		/// 
		public string Phone { get; set; }

		/// 
		/// 传真
		/// 
		public string Fax { get; set; }

		/// 
		/// 邮箱
		/// 
		public string Email { get; set; }

		/// 
		/// qq
		/// 
		public string QQ { get; set; }

		/// 
		/// 地址
		/// 
		public string Address { get; set; }

		#endregion Model

	}

 

 

查询的具体Sql:

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(
                    Constant.ProcGetList,
                    (u, ui) =>
                        {
                            u.UserInfo = ui;
                            return u;
                        },
                        p,splitOn:"SysId",
                    commandType: CommandType.StoredProcedure);

 

 

此处要注意的就是splitOn,他其它是分割子对象的属性。

转载于:https://www.cnblogs.com/jiguixin/p/3317485.html

你可能感兴趣的:(Dapper 嵌套对象查询)