2017-08-23 13 views
2

最新バージョンのAuto Mapper 6.1.0'を使用しています。 私は以下のようなPollPolOptionテーブルがあります。AutoMapperを使ってネストされたリストを別のリストにマップする方法

public class Poll 
{ 
     public int Id { get; set; } 
     public string Title { get; set; } 
     public string Body { get; set; } 
     public virtual ICollection<PollOption> Options { get; set; } 
} 

public class PollOption 
{ 
    public virtual string Title { get; set; } 
    public int Id { get; set; } 
    public int PollId { get; set; } 
    public virtual Poll Poll { get; set; } 
} 

をし、同じように、私はこれらのモデルには2つのviewModelsを持っている:私はオートマッパーの設定のためにこれを使用しています

public class EditPollViewModel 
{ 
    public int Id { get; set; } 
    public virtual string Title { get; set; } 
    public List<PollOptionViewModel> Options { get; set; } 
} 
public class PollOptionViewModel 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 

} 

config.CreateMap<Poll, EditPollViewModel>().ForMember(dest => dest.Options, src => src.MapFrom(t => t.Options)); 

しかし私がプロジェクトを実行しているとき以下のコードでエラーが発生しました。

return Mapper.Map<EditPollViewModel>(model); 

私はこのエラーを得ている:

は、型マップの設定またはサポートされていないマッピングがありません。

マッピングタイプ:PollOption - > PollOptionViewModel

PollOption - >

PollOptionViewModel

+0

()この 'CreateMapを追加ReverseMap()'と再試行する。 –

+0

私はそれを試みましたが、結果は同じです –

+0

'PollOption'を' PollOptionViewModel'にマップします!これはあなたの質問には存在しません。 –

答えて

2

あなたはAutomapper OptionsOptionsのように同じ名前を持つマップのメンバーはこれを自動的に行う必要はありませんし、 PollOptionPollOptionViewModelにマッピングするのを忘れた:

config.CreateMap<PollOption , PollOptionViewModel>().ReverseMap() 

ともあなたのマップにReverseMap()を追加

public List<PollOptionViewModel> Options { get; set; } 

public ICollection<PollOptionViewModel> Options { get; set; } 

に変更します。

config.CreateMap<Poll, EditPollViewModel>().ReverseMap() 
+0

良いサイードに感謝します。 'ReverseMap'メソッドについて教えてください。 –

+1

'ReverseMap'を呼び出すと、AutoMapperは非平坦​​化を含む逆マッピング設定を作成します。 [もっと見る](https://github.com/AutoMapper/AutoMapper/wiki/Reverse-Mapping-and-Unflattening) –

関連する問題