集合中嵌套对象的自动映射器映射

时间:2013-08-25 18:19:02

标签: c# automapper

我有一个类(Question),其中包含一个名为“PostedBy”的嵌套属性,它是一个名为“User”的类,我试图使用auto mapper将datareader映射到IEnumerable,并且还想填充嵌套的User类每个问题。

e.g。

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; }
}

我正在使用以下代码来映射类问题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);

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。方法如下:

        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);