我很难理解如何映射某些对象。请回答关于这个简单例子的一些问题。简单的自动映射器示例
实施例代码
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
到GroupDto
,你必须映射User
到UserDto
内部因为在Group
的List<User>
包括未映射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)))
这是正确的吗?
为什么你的GroupDTO不包含UserDTO?如果是这样,那么AutoMapper就不需要更多的配置,除了'CreateMap'。 – stuartd
这里是简单的文章,我写在使用C#的Automapper上http://www.codeproject.com/Articles/986460/What-is-Automapper –
阅读此文章:http://www.codearsenal.net/2012/12/ csharp-object-to-object-mapping-automapper.html –