IList (IList<T>) creează imediat date persistente în memorie, care nu implementează "execuția amânată", iar dacă entitatea încărcată are entități asociate, entitatea asociată nu va fi încărcată (nici imediat, nici leneș).
IQeurable <T>nu creează imediat date persistente în memorie, ci încarcă date în memorie doar dacă acestea sunt parcurse (de exemplu prin forreach), convertite într-o listă etc., și poate realiza "execuția amânată", dacă entitatea încărcată în prezent are asocieri, această entitate asociată poate fi încărcată la următorul acces.
Uită-te la următoarea bucată de cod:
//IList的情况 IList users = res. ToList(); Utilizatorii au fost încărcați în memorie, dar entitatea asociată (UserInfos) fiecărui utilizator nu a fost încărcată este încărcat, așa că următoarea linie de cod nu trece fără probleme var ss = utilizatori. Unde(p => p.UserInfos.ID != 3); Eroarea este raportată aici deoarece entitatea UserInfos a lui P nu poate fi încărcată
Situația IQuerable Utilizatori IQueryable = res. AsQueryable(); utilizatorii nu sunt încărcați imediat, iar entitatea asociată poate fi obținută prin "încărcare leneșă" Am înţeles var ss = utilizatori. Unde(p => p.UserInfos.ID != 3); SS-ul corespunzător a fost obținut cu succes aici |