2017-08-25 31 views
0

私はこのエラーを取得しています:AutoMapper - AutoMapperMappingException:エラーマッピングタイプ

AutoMapperMappingException: Error mapping types.

Mapping types: Game -> VirtualGame

InvalidOperationException: Nullable object must have a value.

Property: Timing lambda_method(Closure , object , object , ResolutionContext)

AutoMapperMappingException: Error mapping types.

私は以下のコードブロックにそれをトレースしたと思います。このエラーがなくなるように、このブロックのヌルをチェックする方法はありますか?

cfg.CreateMap<Game, VirtualGame>() 

     .ForMember(d => d.GameTiming, opt => 
       { 

        opt.Condition(s => s.GameStartTime != null && s.GameEndTime != null); 
        opt.MapFrom(
         s => new Timing(s.GameStartTime.Value, s.GameEndTime.Value, s.GameDuration)); 
       }) 

ああ、これは "タイミング" とは何であるかです:

public Timing(DateTime gameStartTime, DateTime gameEndTime, Int32? 
       gameDuration = null) 

答えて

2
opt.PreCondition(s => s.GameStartTime != null && s.GameEndTime != null); 

The docs

同様に、前提条件があります。違いは、ソース値が解決される前に、マップ処理でより早く実行されることです(MapFromまたはResolveUsingと考える)。したがって、前提条件が呼び出され、次にマッピングのソース(解決)が決定され、条件が呼び出され、最終的に目的地の値が割り当てられます。自分で手順を見ることができます。

+0

ありがとうございました!それは私のopt.Conditionステートメントに取って代わるものですか? – SkyeBoniwell

+0

はい、あります。更新しました。 –

関連する問題