Dapper 네스트된 객체 질의

2721 단어
나는 이러한 일대일 관계의 표 구조를 가지고 있다. 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

좋은 웹페이지 즐겨찾기