2017-06-18 337 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'。 –

相关问题