2013-08-25 2 views
1

У меня есть класс (вопрос), который содержит вложенный элемент, называемый «ДобавленоBy», который является классом «Пользователь», и я пытаюсь сопоставить datareader с IEnumerable с помощью auto mapper и также хотите заполнить вложенный класс пользователей каждого Вопроса.Автоматическое сопоставление карты вложенного объекта в коллекции

например.

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); 
Смежные вопросы