2017-07-21 11 views
0
public class ObjectA 
{ 
    string abc {get; set;} 
} 

public class ObjectB 
{ 
    string abc {get; set;} 
    string bla {get; set;} 
} 

public class A 
{ 
    public string x { get; set; } 
    public ICollection<ObjectA> CollectionA {get; set;} 
} 

public class B 
{ 
    public string x { get; set; } 

    public ICollection<Object B> CollectionB { get; set; } 
} 



cfg.CreateMap<A, B>() 
    .ForMember(dest => dest.CollectionB, opt => opt.MapFrom(src => src.CollectionA)); 

こんにちは、私はこのコレクションを保持したいと思いますが、bla文字列を無視して、どうすればいいですか?Automapperはただ1つのコレクション属性を無視します

私は何かをしなければならないと思います: .ForSourceMember(x => x.CollectionB、opt => opt.Ignore());

automapperのドキュメントで検索されましたが、コレクションでこれを行う方法が見つかりませんでした。 誰かが私を助けることができますか? ありがとう!

答えて

0

私は、コレクションオブジェクトの属性自体をマップする必要はありません。このように、

cfg.CreateMap<A, B>() 
    .ForMember(dest => dest.CollectionB, opt => opt.MapFrom(src => src.CollectionA)) 

をとの関係をオブジェクト:ちょうどこのように、私の以前のマッピングを維持する必要が

cfg.CreateMap<ObjectB, ObjectA>() 
    .ForSourceMember(src => src.bla, dest => dest.Ignore()); 

その方法のautomapperコレクションを解決します! これは誰かを助けることを願っています!

0

ObjectAからObjectBへのマッピングを追加すると、automapperはこれを使用します。

AutomapperもIEnumberable<ObjectA>からIEnumberable<ObjectB>に明示的なマッピングを必要としません - ちょうど最初のObjectAObjectB - それは残りを推測します、彼らは自分自身を持っているので(もちろんあなたはまだしかし、上記の例では、あなたのABへのマッピングが必要になりますプロパティ)。

+0

Im向き: CollectionB ---> AutoMapper.AutoMapperMappingException:タイプマップの設定が欠落しているか、サポートされていないマッピングです。 – DanW

関連する問題