sql >> Database teknologi >  >> RDS >> Mysql

MySQL + Code First + Lazy Load problem!

Det er præcis, hvad der sker, men jeg tror, ​​at det ikke er den grund, du tror. DataReader er stadig åben, ikke på grund af udskudt eksekvering i Linq, men fordi du stadig itererer gennem forespørgselsresultaterne, når du forsøger at få adgang til den anden egenskab, der endnu ikke er indlæst. Når du kalder .ToList() resultaterne returneres på én gang og gemmes i en List<TEntity> i hukommelsen på klienten, i stedet for at blive returneret 1 post ad gangen.

Du kan komme uden om dette i MS SQL Server ved at bruge indstillingen MultipleActiveResultSets=true i din forbindelsesstreng, men MySQL understøtter ikke denne indstilling. Hvad du dog burde være i stand til at gøre, er ivrig at indlæse de yderligere data, du har brug for ved hjælp af .Include("tablename")

var houses = (from h in db.Houses.Include("Images")
              select h).Take(10);



  1. MySQL:Vælg Concat af strenge og Længde af resulterende Concat

  2. FEJL:skal være medlem af rollen Ved oprettelse af skema i PostgreSQL

  3. Sådan gør du dette i Laravel, underforespørgsel hvor i

  4. Mysql udtræk det første bogstav i hvert ord i en bestemt kolonne