2017-06-18 329 views
0

我在我的asp.net webapi項目中實現了automapper。我還在業務層中實施了異步任務。我基本上要返回MoviesDto對象,而不是電影的實體,但得到一個錯誤列表不包含getAwaiter.The錯誤definiton是在該行List <>不包含getAwaiter的定義

return await _mapper.Map<List<MoviesDto>>(movies); 

不知道是什麼問題。這裏是我的代碼如下

MoviesDto

public class MoviesDto : BaseDto 
    { 
     public int MovieID { get; set; } 
     public string Title { get; set; } 
     public int? ReleaseYear { get; set; } 
     public string Plot { get; set; } 
     public int? MovieLength { get; set; } 
    } 

業務接入層

public class MovieBusiness: IMovieBusiness 
    { 
     IMovieService _movieService; 
     IMapper _mapper; 

     public MovieBusiness(IMovieService movieService, IMapper mapper) 
     { 
      _movieService = movieService; 
      _mapper = mapper; 
     } 

     public async Task<IEnumerable<MoviesDto>> GetAllMovies() 
     { 

      var movies = _movieService.GetMovies(); 
      return await _mapper.Map<List<MoviesDto>>(movies); 
     } 

    } 
+0

中有標記的地圖'()'方法'async'沒有點作爲它不涉及I/O並不能阻止潛在的。它是'_movieService.GetMovies()'最好是'async',應該是'await'ed。 – haim770

回答

0

方法_mapper.Map()是不是異步,所以你不必await它。

只需使用return _mapper.Map<List<MoviesDto>>(movies);

+0

它不會編譯,因爲方法簽名被綁定返回'任務>' – haim770

+0

所以你的意思是我不能使用automapper與異步方法 – Tom

+0

@Tom你可以。只需返回'_mapper.Map'(它將被編譯)或者使用'Task.FromResult'。 –

相關問題