Допустим, у вас есть две сущности с отношением один-ко-многим: Клиент и Заказ, где у каждого Клиента может быть несколько заказов.
При загрузке сущности Клиента Entity Framework позволяет вам либо стремитьсязагрузить или лениво загрузить коллекцию заказов клиента.Если вы решите загружать коллекцию заказов, то при извлечении клиента из базы данных Entity Framework сгенерирует SQL, который извлекает и информацию о клиенте и заказы клиента в одном запросе.Однако, если вы решите лениво загрузить коллекцию Orders, при извлечении Customer из базы данных Entity Framework сгенерирует SQL, который only извлекает информацию о Customer (Entity Framework затем сгенерирует отдельный оператор SQL, если выполучите доступ к коллекции заказов клиентов позже в своем коде).
Определение того, когда использовать загрузку с нетерпением, а когда - с отложенной загрузкой, все сводится к тому, что вы ожидаете сделать с объектами, которые вы получите.Если вы знаете, что вам нужна только информация о Клиенте, вам следует лениво загрузить коллекцию «Заказы» (чтобы SQL-запрос мог быть эффективен только при получении информации о Клиенте).И наоборот, если вы знаете, что вам нужно пройти через Заказы Клиента, вам следует загружать Заказы с нетерпением (таким образом, вы сэкономите дополнительный удар по базе данных, как только получите доступ к Заказам Клиента в своем коде).
PS Будьте очень осторожны при использовании отложенной загрузки, так как это может привести к проблеме N + 1.Например, предположим, у вас есть страница, которая отображает список клиентов и их заказов.Тем не менее, вы решаете использовать отложенную загрузку при получении заказов.Когда вы выполняете итерацию по коллекции «Клиенты», а затем по каждому «Заказу клиента», вы выполняете обращение к базе данных, чтобы каждый клиент «лениво» загружал свою коллекцию «Заказы».Это означает, что для N клиентов у вас будет N + 1 попадание в базу данных (1 попадание в базу данных для загрузки всех клиентов, затем N попаданий в базу данных для загрузки каждого из их заказов) вместо одного обращения в базу данных, если вы использовали энергичную загрузку(что позволило бы получить все клиенты и их заказы в одном запросе).