Masalahnya adalah ini:
EF tidak mendukung pemrosesan beberapa permintaan melalui objek DbContext yang sama. Jika permintaan asinkron kedua Anda pada instance DbContext yang sama dimulai sebelum permintaan pertama selesai (dan itulah intinya), Anda akan mendapatkan pesan kesalahan bahwa permintaan Anda sedang diproses terhadap DataReader yang terbuka.
Sumber:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx
Anda perlu mengubah kode Anda menjadi seperti ini:
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);
}