我很难理解如何映射某些对象。请回答有关这个简单示例的一些问题。
示例代码
class User
{
private int id;
private string name;
}
class Group
{
private int id;
private string name;
private List<User> users;
}
[DataContract]
public class UserDto
{
[DataMember]
public int id { get; set; }
[DataMember]
public string name{ get; set; }
}
[DataContract]
public class GroupDto
{
[DataMember]
public int id { get; set; }
[DataMember]
public string name{ get; set; }
[DataMember]
public List<User> Users { get; set; }
}
制图者
Mapper.CreateMap<User, UserDto>();
Mapper.CreateMap<UserDto, User>();
Mapper.CreateMap<Group, GroupDto>();
Mapper.CreateMap<GroupDto, Group>();
测绘时Group
to GroupDto
,你需要映射吗User
to UserDto
内部因为List<User>
in Group
由未映射的Users
?如果是这样,你该怎么做?我的猜测是
Mapper.CreateMap<Group, GroupDto>()
.ForMember(g => g.id, opt => opt.Ignore());
.ForMember(g => g.name, opt => opt.Ignore());
.ForMember(g => g.Users, opt => opt.MapFrom(u => Mapper.Map<Group, UserDto>(u)))
它是否正确?
1-将 GroupD 更改为如下所示:
[DataContract]
public class GroupDto
{
[DataMember]
public int id { get; set; }
[DataMember]
public string name{ get; set; }
[DataMember]
public List<UserDTO> Users { get; set; }
}
2- 创建您的映射:
Mapper.CreateMap<User, UserDto>();
Mapper.CreateMap<UserDto, User>(); // Only if you convert back from dto to entity
Mapper.CreateMap<Group, GroupDto>();
Mapper.CreateMap<GroupDto, Group>(); // Only if you convert back from dto to entity
3-仅此而已,因为自动映射器会自动映射List<User>
to List<UserDto>
(因为它们具有相同的名称,并且已经存在从 user 到 UserDto 的映射)
4-当您想要绘制地图时,请致电:
Mapper.Map<GroupDto>(groupEntity);
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)