IList (IList<T>) okamžitě vytváří trvalá data v paměti, což neimplementuje "odložené vykonání", a pokud má načtená entita přidružené entity, nebude načtena (ani okamžitě, ani líně).
IQeurable <T>nevytváří okamžitě trvalá data v paměti, ale načítá data pouze tehdy, pokud jsou procházena (např. přes forreach), převedena do seznamu atd., a může dosáhnout "odloženého vykonání", pokud má právě načtená entita asociace, může být tato přidružená entita načtena dalším přístupem.
Podívejte se na následující kód:
//IList的情况 IList uživatelé = res. ToList(); Uživatelé byli nahráni do paměti, ale příslušná entita (UserInfos) pro každého uživatele nebyla načtena je načtená, takže další řádek kódu neprojde hladce var ss = uživatelé. Where(p => p.UserInfos.ID != 3); Chyba je zde hlášena, protože entita UserInfos od P nemůže být načtena
Situace IQuerable IQueryable uživatelé = res. AsQueryable(); uživatelé nejsou načítáni okamžitě a příslušnou entitu lze získat "lenivým načítáním" Jasně var ss = uživatelé. Where(p => p.UserInfos.ID != 3); Zde bylo úspěšně získáno odpovídající SS |