I'm learning EFCore and IAsyncEnumerable (now with .net 5 and all the expectation) and I'm struggling understanding await foreach because in one test case I made is blocking execution (or that seems to me)
static async Task Main()
{
    await Test().ConfigureAwait(false);
    Debug.WriteLine("this should happen before, isn't it?");
    Console.ReadKey();
}
static async Task Test()
{
    using var ctx = new MyContext();
    var testDbset = ctx.Entries;
    await foreach (var entry in testDbset.ConfigureAwait(false))
    {
        Console.WriteLine(entry.ToString());
    }
}
The problem is the "before" sentence is written the last, not even in the middle; and the console is fully filled in block out of nowhere. The context is querying a localsql db. Is there something I'm not understanding?
 
                        
If you want the message to appear first, don't await the task till after it has been printed.