Сделать вызов базы данных асинхронным в EF
Я использую 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 Framework у нас есть методы xxxAsync(). Но я не нахожу таких методов в EF 5.0.
Если приведенный выше код неэффективен, как я могу написать асинхронный метод для дорогостоящих вызовов базы данных с использованием EF 5.0?
Любая помощь приветствуется.