If you query a set, disable proxy creation and query the same set again you have a big chance to get proxied entities anyway. The reason is identity map used internally in the context. Each entity can be tracked by the context only once. So if you query the set with proxy creation enabled, EF will create entity instance with dynamic proxy for every unique record loaded from the database. When you query the set again after disabling proxy creation, EF will reuse all already created entities (with their proxies) and create new ones without dynamic proxies only for records which hasn't been loaded yet.
If you want to avoid those proxies you must either:
- Turn off proxy creation before the first query
- Use a new context for the second query
You can also try to use AsNoTracking()
but I have suspicion that it will not work.