To je přesně to, co se děje, ale myslím si, že to není tak docela důvod, proč si myslíte. DataReader je stále otevřený, ne kvůli odloženému spuštění v Linq, ale protože stále procházíte výsledky dotazu, když se pokoušíte získat přístup k jiné vlastnosti, která ještě není načtena. Když zavoláte .ToList()
výsledky se vrátí všechny najednou a uloží se do List<TEntity>
v paměti na klientovi, místo aby byl vracen po 1 záznamu.
V MS SQL Server to můžete obejít pomocí nastavení MultipleActiveResultSets=true
ve vašem připojovacím řetězci, ale MySQL toto nastavení nepodporuje. Co byste však měli být schopni udělat, je dychtivě načíst další potřebná data pomocí .Include("tablename")
var houses = (from h in db.Houses.Include("Images")
select h).Take(10);