Problém je tento:
EF nepodporuje zpracování více požadavků prostřednictvím stejného objektu DbContext. Pokud váš druhý asynchronní požadavek na stejné instanci DbContext začne před dokončením prvního požadavku (a to je celý bod), zobrazí se chybová zpráva, že se váš požadavek zpracovává proti otevřenému DataReaderu.
Zdroj:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx
Budete muset upravit svůj kód na něco takového:
async Task<List<E1Entity>> GetE1Data()
{
using(var MyCtx = new MyCtx())
{
return await MyCtx.E1.Where(bla bla bla).ToListAsync();
}
}
async Task<List<E2Entity>> GetE2Data()
{
using(var MyCtx = new MyCtx())
{
return await MyCtx.E2.Where(bla bla bla).ToListAsync();
}
}
async Task DoSomething()
{
var t1 = GetE1Data();
var t2 = GetE2Data();
await Task.WhenAll(t1,t2);
DoSomething(t1.Result, t2.Result);
}