Hi - thanks for the challenge.
I've assumed that it's not allowed to keep a DbContext instance around between benchmark invocations, i.e in the baseline example a new dbcontext is created every time and this added to overhead. In a real app you'd pool the instances. However to keep the benchmarks like for like and to focus only on speeding up the query capability, i've not tried to cache or pool dbcontext instances..