我很难决定哪种方式最适合在我的 WebAPI 2 后端查询我的 SQL Server我试图尽可能多地使用 async/await,但我发现当我返回整个集合时,没有可用的 async 选项。哪种方式最好?[ResponseType(typeof(List<ExposedPublisher>))][HttpGet]public async Task<IHttpActionResult> GetPublisher(){ var list = new List<PublisherWithMedia>(); foreach (var publisher in _db.Publisher.Where(e => e.IsDeleted == false)) { var pub = new PublisherWithMedia() { Id = publisher.Id, Name = publisher.Name, Mediae = new List<WebClient.Models.Media>() }; foreach (var media in publisher.Media) { pub.Mediae.Add(ApiUtils.GetMedia(media)); } list.Add(pub); } return Ok(list);}或者[ResponseType(typeof(List<PublisherWithMedia>))][HttpGet]public async Task<IHttpActionResult> GetPublisher(){ var list = new List<PublisherWithMedia>(); var entity = await _db.Publisher.ToListAsync(); foreach (var publisher in entity.Where(e => e.IsDeleted == false)) { var pub = new PublisherWithMedia() { Id = publisher.Id, Name = publisher.Name, Mediae = new List<WebClient.Models.Media>() }; foreach (var media in publisher.Media) { pub.Mediae.Add(ApiUtils.GetMedia(media)); } list.Add(pub); } return Ok(list);}该操作可能会导致非常大的结果集,因此直接在数据库上进行过滤是有意义的,尤其是因为随着时间的推移,已删除记录的数量可能会超过未删除记录的数量。但是,由于结果较大且需要查询子项(媒体),因此异步操作也很有意义,因为它应该非常耗时。可悲的是,Where()在这种情况下没有异步。还是有我不知道的第三种方式?
1 回答
- 1 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消