IList (IList<T>) luo välittömästi pysyvän datan muistiin, joka ei toteuta "viivästettyä suoritusta", ja jos ladattuun entiteettiin liittyy entiteettejä, sitä ei ladata (ei heti eikä laiskasti).
IQeurable <T>ei luo välittömästi pysyvää dataa muistiin, vaan lataa dataa muistiin vain, jos se kuljetaan läpi (esim. forreachin kautta), muunnetaan listaksi jne., ja voi saavuttaa "viivästetyn suorituksen"; jos ladatulla yksiköllä on assosiaatioita, tämä entiteetti voidaan ladata seuraavalla käyttökerralla.
Katso seuraavaa koodia:
//IList的情况 IList-käyttäjät = resoluutio. ToList(); Käyttäjät on ladattu muistiin, mutta kunkin käyttäjän liittyvä entiteetti (UserInfos) ei ole on ladattu, joten seuraava koodirivi ei mene sujuvasti läpi var ss = käyttäjät. missä(p => p.UserInfos.ID != 3); Virhe raportoidaan tässä, koska P:n UserInfos-entiteettiä ei voida ladata
IQuerablen tilanne IQueryable-käyttäjät = resoluutio. AsQueryable(); käyttäjiä ei ladata heti, ja siihen liittyvä entiteetti voidaan saada "laiskan latauksen" avulla. Selkis var ss = käyttäjät. missä(p => p.UserInfos.ID != 3); Vastaava SS saatiin menestyksekkäästi täällä |