2016-08-25 26 views
0

マップ作成中にAutoMapperにネストされたプロパティの既存のインスタンスにマップすることは可能ですか?Automapper:既存のネストされた複合プロパティへのマッピング

のは、私はクラスを持っているとしましょう:

public class SomeClass 
{ 
    public int Id {get; set;} 
    public Complex Settings {get; set;} 

} 

public class Complex 
{ 
    public int Id { get; set;} 
    public string SomeText { get; set;} 
} 

私は工assに工assからマップを作成し、既存のインスタンスにプロパティをマップするためにそれを使用したいです。

Mapper.CreateMap<SomeClass, SomeClass>() 
    .ForMember(src => src.Settings, opts => opts.MapFrom(src => Mapper.Map<Complex, Complex>(src)); 

Mapper.CreateMap<Complex, Complex>(); 

Mapper.Map<SomeClass, SomeClass>(a, b); 

ここで、aとbはSomeClassのインスタンスです。問題は、このソリューションがプロパティを既存のインスタンスにマップしますが、a.Complexを既存のb.Complexにマッピングするのではなく、新しいComplexインスタンスを作成することです。

希望の動作を得るためにAutoMapperを設定することはできますか?

(これはEntity Frameworkに多くの問題を引き起こしています)。

+1

可能な重複:

正しいマップの作成は、次のようになります3672447/how-do-you-map-a-dto-to-exist-object-instance-with-nested-objects-auを使用して) – MisterIsaak

答えて

1

私はそれを自分で考え出しました。ソリューションはかなりシンプルでした。 [?どのようAutoMapperを使用して、ネストされたオブジェクトと既存のオブジェクトインスタンスにDTOをマップしない](http://stackoverflow.com/questions/の

Mapper.CreateMap<SomeClass, SomeClass>() 
.ForMember(src => src.Settings, opts => opts.Ignore()) 
.AfterMap((src, dst) => Mapper.Map<TestSettings,TestSettings>(src.TestSettings, dst.TestSettings); 

Mapper.CreateMap<Complex, Complex>(); 
関連する問題