IList (IList<T>) opretter straks persistente data i hukommelsen, hvilket ikke implementerer "udskudt eksekvering", og hvis den indlæste enhed har tilknyttede enheder, vil den tilknyttede enhed ikke blive indlæst (hverken umiddelbart eller dovent).
IQeurable <T>opretter ikke straks persistente data i hukommelsen, men indlæser kun data i hukommelsen, hvis de gennemsøges (f.eks. gennem forreach), konverteres til en liste osv., og kan opnå "udskudt eksekvering"; hvis den aktuelt indlæste enhed har associationer, kan denne tilknyttede enhed indlæses ved næste adgang.
Se på følgende kode:
//IList的情况 IList-brugere = opløsning. ToList(); Brugere er blevet indlæst i hukommelsen, men den tilknyttede enhed (UserInfos) for hver bruger er ikke blevet det er indlæst, så den næste kodelinje ikke går igennem uden problemer var ss = brugere. Hvor(p => p.UserInfos.ID != 3); Fejl rapporteres her, fordi P's UserInfos-enhed ikke kan indlæses
IQuerables situation IQuerable brugere = opløsning. AsQueryable(); Brugere indlæses ikke med det samme, og den tilknyttede enhed kan opnås ved "doven indlæsning" Har det var ss = brugere. Hvor(p => p.UserInfos.ID != 3); Den tilsvarende SS blev med succes opnået her |