IList (IList<T>) негайно створює постійні дані в пам'яті, яка не реалізує «відстрочене виконання», і якщо завантажена сутність має пов'язані сутності, відповідна сутність не буде завантажена (ні негайно, ні ліниво).
IQeurable <T>не створює одразу постійні дані в пам'яті, а завантажує їх лише у разі, коли вони обходять (наприклад, через форрич), конвертуються у список тощо, і можуть досягти «відкладеного виконання», якщо завантажена об'єкта має асоціації, ця асоційована сутність може бути завантажена наступним доступом.
Подивіться на наступний фрагмент коду:
//IList的情况 IList users = res. ToList(); Користувачі були завантажені в пам'ять, але пов'язана сутність (UserInfos) для кожного користувача — ні. завантажується, тому наступний рядок коду не проходить гладко var ss = користувачі. Де(p => p.UserInfos.ID != 3); Тут повідомляється про помилку, оскільки сущність UserInfos від P не може бути завантажена
Ситуація IQuerable IQueryable users = res. AsQueryable(); Користувачі не завантажуються одразу, і відповідну сутність можна отримати шляхом «лінивого завантаження» Зрозуміло var ss = користувачі. Де(p => p.UserInfos.ID != 3); Відповідний SS був успішно отриманий тут |