我需要在父级中映射嵌套对象的一个属性。
假设我users
有roles
,但角色有一个名为TransRoles
的翻译对象,最后一个具有我想要的属性Description
。
UsersDTO
加价:
public partial class UserDTO
{
public short Id { get; set; }
/* ... */
public virtual RolesDTO RolesDTO { get; set; }
}
RolesDTO
加价:
public class RolesDTO
{
public int Id { get; set; }
public string Description { get; set; } // Mapping destination
/* ... */
}
Users
加价:
public partial class User
{
public short Id { get; set; }
/* ... */
public virtual Roles Roles { get; set; }
}
Roles
加价:
public class Roles
{
public int Id { get; set; }
public virtual ICollection<TransRoles> TransRoles { get; set; }
// this class doesn't have the description
/* ... */
}
TransRoles
加价:
public class TransRoles
{
public int Id { get; set; }
public string Description { get; set; } // Mapping source
/* ... */
}
我有以下代码,但我想要Users.Roles.TransRoles.Description
的描述未加载到UsersDTO.RolesDTO.Description
:
Mapper.CreateMap<User, UserDTO>();
// Dependencies
Mapper.CreateMap<Roles, RolesDTO>()
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.TransRoles.FirstOrDefault().Description));
如果我手动映射它可以运行的属性,但我认为如果我使用库映射器则不是这个想法:
Mapper.CreateMap<User, UserDTO>();
Mapper.CreateMap<Roles, RolesDTO>();
// Manually mapping
UserDTO UserDTO = Mapper.Map<UserDTO>(User);
UserDTO.RolesDTO.Descripcion = User.Roles.TransRoles.FirstOrDefault().Description;
答案 0 :(得分:0)
我必须找到主要对象的所有内部引用,在我的示例中,Thymeleaf
有更多的那个孩子。此外,我目前正在使用Oracle 11和EF 6.0,并且此版本不支持RolesDTO
查询,因此包括不按预期方式工作的地方。
在映射对象时始终使用APPLY
,这样您就不会错过任何东西,如果您使用带有EF 6.0的Oracle 11,请小心。