Cosa succede quando si avviano più query Entity Framework asincrone e eseguono in parallelo?Entity Framework supporta query asincrone parallele?
Sono eseguiti fisicamente in parallelo? Sono serializzati da Entity Framework? Questo non è supportato? Risulterà in un'eccezione?
public async Task QueryDatabase()
{
using (var context = new MyDbContext())
{
Task task1 = context.SomeTable1.ToListAsync();
Task task2 = context.SomeTable2.ToListAsync();
await Task.WhenAll(task1, task2);
}
}
Upvote per la precisione, anche se vorrei poter downvotare il tizio che ha scritto il frammento di Codeplex. Una buona query è quasi del tutto dannosa per il db, che nella maggior parte dei casi è multi-CPU e in molti casi in rete. Lanciare un gruppo di chiamate asincrone parallele al db usa NESSUN thread! http://blog.stephencleary.com/2013/11/there-is-no-thread.html Dovrebbe essere banale per EF supportare questo se tutte le query sono .AsNoTracking(), ma questa eccezione viene comunque generata. –
@ChrisMoschini Sono sicuro che l'ultima frase non è riferita a EF ma a SQL Server. –
@ErikPhilips Non sei sicuro di cosa intendi, puoi chiarire? –