1

「User」と呼ばれるクラスである「PostedBy」と呼ばれるネストされたプロパティを含むクラス(Question)があり、自動マッパーを使用してデータリーダーを IEnumerable にマップしようとしており、各質問のネストされた 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 (「ユーザー」クラス) は常に 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);
4

1 に答える 1

2

私は問題を解決しました。方法は次のとおりです。

        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);
于 2013-08-27T15:19:04.770 に答える