IList (IList<T>) takoj ustvari trajne podatke v pomnilniku, kar ne izvaja "odloženega izvajanja", in če ima naložena entiteta povezane entitete, se povezana entiteta ne naloži (niti takoj niti leno).
IQeurable <T>ne ustvarja takoj trajnih podatkov v pomnilniku, ampak jih naloži v pomnilnik le, če jih prečkamo (npr. prek forreach), pretvorijo v seznam itd., in lahko doseže "odloženo izvajanje", če ima trenutno naložena entiteta povezave, se ta povezana entiteta lahko naloži z naslednjim dostopom.
Oglejte si naslednji kos kode:
//IList的情况 IList uporabniki = res. ToList(); Uporabniki so bili naloženi v pomnilnik, vendar pripadajoča entiteta (UserInfos) za vsakega uporabnika ni je naložena, zato naslednja vrstica kode ne gre gladko var ss = uporabniki. Where(p => p.UserInfos.ID != 3); Napaka je tukaj prijavljena, ker P-jeve entitete UserInfos ni mogoče naložiti
Situacija IQuerable IQueryable uporabniki = res. AsQueryable(); uporabniki se ne naložijo takoj, pripadajočo entiteto pa je mogoče pridobiti z "lenobnim nalaganjem" Že vem var ss = uporabniki. Where(p => p.UserInfos.ID != 3); Ustrezni SS je bil uspešno pridobljen tukaj |