2013-08-25 275 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);