c# - 为什么 asp.net Web API 上的 GET 方法返回 IQueryable?

标签 c# asp.net asp.net-web-api2 iqueryable

在 asp.net Web Api2 中,当您为具有 Entity Framework 的模型创建异步 Web API Controller 时,默认情况下,新 Controller 中的第一个方法如下所示:

 public IQueryable<MyModel> GetMyModel()
 {
     return db.MyModel;
 }

此方法的 JSON 输出只是所有 MyModel 的数组条目。同时,POST、PUT、GET(int id) 和 DELETE 的所有其他方法都标记为 async。并返回 Task<IHttpActionResult> .为什么第一个 GET 方法不是同样的风格,像这样:

 public async Task<IHttpActionResult> GetMyModel()
 {
     return Ok(await db.MyModel.ToArrayAsync());
 }

我试过了,它产生了相同的 JSON 输出。

最佳答案

因为 Web API 无论如何都会具体化结果,所以生成所需的最少代码。

通过调用 ToArrayAsync(),您实际上是在做不必要的工作,无论如何稍后都会为您完成。

关于c# - 为什么 asp.net Web API 上的 GET 方法返回 IQueryable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924726/

相关文章:

c# - 了解字符串比较行为

c# - Identity UpdateAsync 丢失 IdentityResult.Failed

asp.net - ASP.NET MVC 在工业中得到广泛应用还有多久?

asp.net - ASP.NET 4.0 中不同的服务器和客户端缓存策略

c# - 为什么即使在转换其父类之后,Web API Action 方法也会返回子属性的 Json

c# - 如何使用 WebApplicationFactory 在 TestServer 中切换服务?

c# - 按名称获取类型并将反序列化的 json 数据转换为该对象

C# 在不指定参数名称的情况下运行过程

asp.net-core - WEB API Action Method 的返回类型应该是什么?

asp.net-web-api2 - 使用 WebAPI 2 解析器显式解决依赖关系