我正在使用Entity Framework在我的ASP.NET Web API中。在查询方法中,我可以选择使用标准的LINQ方法
据我所知,使用:
编辑: 在评论中已经说明了这样做的原因是为了释放线程,但是如果被调用的方法是服务器内部的,则它不是释放一个线程只是为了启动另一个线程来运行被调用的代码吗?
FirstOrDefault()
或EF方法FirstOrDefaultAsync()
。什么时候应该使用其中之一?据我所知,使用:
var users = context.Users.FirstOrDefault(user => user.id == Id);
并且
var users = await context.Users.FirstOrDefaultAsync(user => user.id == Id);
这两种方法都会暂停它们所在的线程,直到调用返回。 Async
方法的唯一优点是它可以在 Async
方法中进行 Awaited
。但是,如果该方法也被等待,则无关紧要?除非你肯定会触发另一个线程的创建。
public async Task MethodOneAsync() {
await MethodTwoAsync();
}
public async Task MethodTwoAsync() {
await context.Users.FirstOrDefaultAsync(..);
...
}
Is this the same as doing:
public async void MethodOneAsync() {
MethodTwo();
... await something else to 'please' the async nature, or remove async all together ...
}
public void MethodTwo() {
context.Users.FirstOrDefault(..);
...
}
谢谢,我只是想澄清自己的困惑。
注意:这是我所指的示例。
这些展示了我所说的链式结构,时间(9和0)以毫秒为单位计算。因此,相对来说,异步方法需要更长时间才能运行。编辑: 在评论中已经说明了这样做的原因是为了释放线程,但是如果被调用的方法是服务器内部的,则它不是释放一个线程只是为了启动另一个线程来运行被调用的代码吗?