我看到EF6中有一个新的功能,即异步方法。我找到了一个例子。
第一种方式是普通调用,例如使用EF5:
public Store FindClosestStore(DbGeography location)
{
using (var context = new StoreContext())
{
return (from s in context.Stores
orderby s.Location.Distance(location)
select s).First();
}
}
在EF6中,新增了异步方法的调用方式。
public async Task<Store> FindClosestStore(DbGeography location)
{
using (var context = new StoreContext())
{
return await (from s in context.Stores
orderby s.Location.Distance(location)
select s).FirstAsync();
}
}
然而,我可以执行以下操作(语法大约如下,我是凭记忆做的):
public async Task<Store> MyAsyncMethod(DbGeography location)
{
return await Task.Run(() => FindClosestStore());
}
我的意思是,我可以使用Task.Run调用第一个方法(不是异步的),等待结果。目前,这是我调用任何方法(不仅仅是EF)的异步调用方式。这也是一个异步调用吗?或者只有当我使用EF6异步方法时才是真正的异步调用?
为什么需要在新版本的EF6中使用异步方法?仅仅是为了简化吗?