Я разрабатываю проект asp.Net mvc, используя первый подход сущностного кода. Но я стараюсь повысить производительность своего приложения. Я не понимаю, что Entity Framework снова запускает запрос базы данных или нет, если я снова получаю такое же условие. См. Мой сценарий ниже.Запустил ли Entity Framework запрос базы данных для уже запущенного запроса?
var item = context.Items.FirstOrDefault();// Database query will be run for this
var start = item.Promotions.FirstOrDefault().Start; // Another query will be run for this
var end = item.Promotions.FirstOrDefault().End; //Will another query be run again? Same query is run again for this
var price = item.Promotions.FirstOrDefault().Price; //Here also
Как вы можете видеть в коде, новый запрос будет запущен для извлечения даты начала акции. Но когда я получаю дату окончания, база данных снова запустит запрос, даже если это тот же запрос. Пожалуйста, объясните мне. Я с этим смущаюсь.
Итак, я получаю как этот контекст.Items.Include (x => x.Promotions). Затем я получаю элемент, подобный этому элементу var item = items.FirstOrDefault(). Если U получит доступ к элементу item.Promotions.FirstOrDefault(), запрос будет запущен снова? –
no он будет включать по умолчанию все экземпляры, связанные с элементом – cpoDesign
Что делать, если отношения одного к одному? Пример var item = context.items.FirstOrDefault(); var start = item.Promotion.Start; var end = item.Promotion.End. Как вы можете видеть, я не привязывал их к переменной. Итак, другой запрос выполняется снова, когда я получаю дату окончания акции? –