2012-11-02 7 views
12

私はautomapperを使用していますが、nullのときにフィールドのマッピングを無視できるかどうかを知りたいと思います。Automapper - 条件付きマッピングを無視する

私のコードです:

.ForMember(dest => dest.BusinessGroup_Id, 
      opt => opt.MapFrom(src => (int)src.BusinessGroup)) 
  • src.BusinessGroup type = "enum"
  • dest.BusinessGroup_Id = int

それはsrc.BusinessGroup = nullの場合は、そのマッピングを違いを無視することの目的。

答えて

25

私はNullSubstituteオプションはトリックに

.ForMember(d => d.BusinessGroup_Id, o => o.MapFrom(s => (int?)s.BusinessGroup)); 
.ForMember(d => d.BusinessGroup_Id, o => o.NullSubstitute(0)); 

を行いますところで、あなたがマッピングアクションであなたの条件を書くことができると思う:

.ForMember(d => d.BusinessGroup_Id, 
      o => o.MapFrom(s => s.BusinessGroup == null ? 0 : (int)s.BusinessGroup)); 

UPDATEをあなたがあなたの財産にいくつかのデフォルト値を割り当てることができない場合には、あなたはそれを無視し、ヌルでないものだけを写像することができます:

.ForMember(d => d.BusinessGroup_Id, o => o.Ignore()) 
.AfterMap((s, d) => 
    { 
     if (s.BusinessGroup != null) 
      d.BusinessGroup_Id = (int)s.BusinessGroup; 
    }); 
+0

こんにちはlazyberezovskyさん、ありがとうございました! DBにforeingKeyがあるので、私は0にBusinessGroup_Idを設定できません – user1520494

+2

Ty !!あなたの最後のアップデートは私にとって完璧です! :) – user1520494

関連する問題