IEnumerable из LINQToSQL, где данные хранятся до и во время итерации / .NET - PullRequest
0 голосов
/ 18 мая 2018

Я прочитал много вопросов / ответов здесь, но я не получаю его.

Если вы используете 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 затрагивает базу данных, не так ли это неэффективно?если база данных имеет какую-то задержку (много поездок туда и обратно)?Не лучше ли сразу получить все данные и сохранить их в памяти?

Большое спасибо, вы потрясающие.

...