我正在使用 EF 5.0 并且有一个关于使数据库调用异步的问题。
下面开始是contextModel>.context.cs中自动生成的方法调用
public virtual ObjectResult<InstructorsComplex> GetInstructors(string nm, string cd, string grp_cd)
{
var nmParameter = nm != null ?
new ObjectParameter("nm", nm) :
new ObjectParameter("nm", typeof(string));
var cdParameter = cd != null ?
new ObjectParameter("cd", cd) :
new ObjectParameter("cd", typeof(string));
var grp_cdParameter = grp_cd != null ?
new ObjectParameter("grp_cd", grp_cd) :
new ObjectParameter("grp_cd", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<InstructorsComplex>("GetInstructors", nmParameter, cdParameter, grp_cdParameter);
}
我正在调用如下方法来实现异步,因为上面的调用大约需要 1 秒才能执行:
public async Task<IList<Instructor>> GetInstructors(DatabaseRequest input)
{
//fetch from database ASYNChronously
var daoOutput = await Task.Run( () => _DAO.GetInstructors(input));
var retVal = daoOutput.ToList<Instructor>();
return retVal;
}
但是,仅通过使用 Task.Run() 运行进程,它会提供任何类型的性能提升吗?
在 .Net 框架中,我们有 xxxAsync() 方法。但我在 EF 5.0 中找不到任何此类方法。
如果上面的代码效率不高,如何使用 EF 5.0 为昂贵的数据库调用编写异步方法?
任何帮助表示赞赏。