Ik heb een ASP.NET MVC project gemaakt als frontend en een ASP.NET WEB API 2 project als backend. Het opstarten van dit project duurde erg lang en alle calls naar de backend zat behoorlijk wat vertraging in. Wat was de reden? Mijn manier van data opvragen deed ik niet goed.
Mijn foute manier was:
var iqueryable = from x in db.Tabelnaam select x; foreach (var item in iqueryable) { // hier deed ik iets met 'item' }
Waarom? Omdat blijkbaar de eerste regel gelijk staat aan var iqueryable = db.Tabelnaam; en daarnaast roept de foreach telkens de database aan omdat het iqueryable-object direct aan de database gekoppeld is. Geen wonder dat het zo traag was.
Hoe moet het wel?
De goede manier is:
var iqueryable = (from x in db.Tabelnaam select x).ToList(); foreach (var item in iqueryable) { // hier deed ik iets met 'item' }
of
var iqueryable = db.Tabelnaam.ToList(); foreach (var item in iqueryable) { // hier deed ik iets met 'item' }
Nu is het iqueryable-object een lijst met entiteiten en wordt de database maar 1x aangeroepen.