2013-08-25 220 views
1

我有一个类(Question),它包含一个名为“PostedBy”的嵌套属性,它是一个名为“User”的类,我试图使用自动映射器将datareader映射到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; } 
} 

我使用下面的代码类问题的内容映射确定,但每个嵌套财产PostedBy(“用户”级)始终为空,从来没有被映射。

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

它可能不会 - 我更专注于LINQ比IDataReader的直接数据支持。 –

回答

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