2017-02-22 9 views
0

単一のモデルプロパティをviewModelにマップする簡単な方法はありますか?AutoMapperを使用してモデルプロパティをビューモデルにマップする方法

:私はその後、私のことができるようにしたい

class Car 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public virtual CarDetails Details {get;set;} 
} 

class CarDetails 
{ 
    public int Id {get;set;} 
    public string Model {get;set;} 
    public DateTime Year {get;set;}  
} 

class DetailsViewModel 
{ 
    public string Name {get;set;} 
    public string Model {get;set;} 
    public DateTime Year {get;set;} 
} 

... 「outterモデル」「内部モデル」(複合型)からの残りの部分からいくつかの小道具をマッピングする必要があり

CreateMap<Car, DetailsViewModel>().ForAllMembers(opts => opts.MapFrom(c => c.Details)); 

PS¹:私はAWだ:私はこのようなものを使用して、成功せずにこれをマップしようとした

var viewModel = mapper.Map<Car, DetailsViewModel>(car); 

オブジェクトを平坦化するための命名法ですが、ビューモデルの名前を変更したくない場合や、複数のForMember文を使用したくない場合(私の現在のモデルは例のものよりもはるかに大きい)です。

PS²:すべての設定を行うには、静的クラスasp.net-coreとAutoMapperConfigを使用しています。だから私は設定を登録する前にMapperインスタンスにアクセスすることはできません。

答えて

1

AutoMapper設定:

var config = new MapperConfiguration(cfg => 
     { 
      cfg.CreateMap<Car, DetailsViewModel>() 
         .ForMember(x => 
          x.Model, opt => opt.MapFrom(src => src.Details.Model)) 
         .ForMember(x => 
          x.Year, opt => opt.MapFrom(src => src.Details.Year)); 

     }); 

var mapper = config.CreateMapper(); 

次にあなたが

var detail = mapper.Map<Car, DetailsViewModel>(car); 
+0

を行うことができます私の質問の最初の観測を参照してください –

関連する問題