Ho visto una nuova funzione in EF6, i metodi asincroni. Trovo un esempioQual è la differenza tra questa chiamata asincrona in EF?
questo primo modo è chiamata normale, con EF5 ad esempio:
public Store FindClosestStore(DbGeography location)
{
using (var context = new StoreContext())
{
return (from s in context.Stores
orderby s.Location.Distance(location)
select s).First();
}
}
E la nuova chiamata, con il metodo asincrono in 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();
}
}
Tuttavia, posso effettuare le seguenti operazioni (la syntaxis è ca., lo faccio a memoria):
public async Task<Store> MyAsyncMethod(DbGeography location)
{
return await Task.Run(() => FindClosestStore());
}
Cioè, che posso usare Task.Run per chiamare il primo metodo, non è asincrono, aspettare il risultato. Al momento, è il modo in cui uso per chiamare qualsiasi metodo asincrono, non solo EF. Anche questa è una chiamata asincrona o la vera chiamata asincrona è quando utilizzo il metodo asincrono EF6?
Perché sono necessari i metodi asincroni nella nuova versione di EF6? Solo per semplicità?
async e await sono lo zucchero sintattico, nuovo in .Net 4.5, puoi fare lo stesso con Task con ContinueWith –