集合中嵌套对象的自动映射器映射
本文关键字:映射 嵌套 对象 集合 | 更新日期: 2023-09-27 18:28:54
我有一个类(Question),它包含一个名为"PostedBy"的嵌套属性,这是一个称为"User"的类,我正在尝试使用自动映射器将数据读取器映射到IEnumerable,还想填充每个Question的嵌套User类。
例如
public class Question
{
public int ID{ get;set; }
public User PostedBy { get; set; }
}
public class User
{
public string Firstname { get;set; }
public string Lastname { get;set; }
}
我使用的以下代码映射了类Question ok的内容,但每个嵌套的属性PostedBy("user"类)始终为null,并且从未映射。
Mapper.CreateMap<IDataReader, Question>().ForMember(destination => destination.PostedBy,
options => options.MapFrom(source => Mapper.Map<IDataReader, User>(reader)));
//now the question information
Mapper.CreateMap<IDataReader, IEnumerable<Question>>();
Mapper.AssertConfigurationIsValid();
IEnumerable<Question> returnValue = Mapper.Map<IDataReader, IEnumerable<Question>>(reader);
我已经解决了这个问题。方法如下:
Mapper.CreateMap<IDataReader, Question>()
.ForMember(question => question.PostedBy,
o =>
o.MapFrom(
reader =>
new User
{
Username = reader["Firstname"].ToString(),
EmailAddress = reader["Lastname"].ToString()
}));
Mapper.AssertConfigurationIsValid();
IEnumerable<Question> mappedQuestions = Mapper.Map<IDataReader, IEnumerable<Question>>(reader);