Я прочитал много вопросов / ответов здесь, но я не получаю его.
Если вы используете LINQtoSQL
IEnumerable<Car> CarsInSale= context.Cars.Where(x=> x.Model=="Ferrari");
foreach(Car car in CarsInSale)
Console.WriteLine("Car:" + car.Price);
Представьте, что запрос затрагивает около 1000 автомобилей.в переменной CarsInSale.Я хочу знать, что происходит в памяти внутри приложения, выполняющего запрос:
- A) До строки foreach использование памяти остается неизменным, верно?(отложенное выполнение)
- B) Как только вызов foreach сделан, все машины сохраняются в памяти?Если ответ НЕТ, где находятся автомобили?потому что это должно быть где-то.Я полагаю, что каждый цикл foreach не попадает в базу данных ... но, пожалуйста, немного осветите его здесь.
- C) Представьте, что я ошибаюсь в пункте B. Каждый цикл foreach затрагивает базу данных, не так ли это неэффективно?если база данных имеет какую-то задержку (много поездок туда и обратно)?Не лучше ли сразу получить все данные и сохранить их в памяти?
Большое спасибо, вы потрясающие.