Если вы, например. иметь сущность «OrderRow» и другое лицо «Заказ», будет навигационное свойство на OrderRow, которое указывает на заказ, которому он принадлежит.
В настоящее время Entity Framework поддерживает только Явный Ленивый нагрузки, что означает, что если вы retreived ряд OrderRows и хотите проверить что-то на заказ, Вы должны:
// or is an OrderRow
if(!or.Order.IsLoaded)
or.Order.Load()
or.Order.Cancel();
Однако если у вас есть неявное ленивая загрузка вам не нужна проверка IsLoaded, это будет сделано автоматически, вы можете сделать or.Order.Cancel()
напрямую, и Заказ будет загружен автоматически, если потребуется. Вот как работает linq-to-sql, и это экономит некоторую типизацию и некоторый риск для ошибок. С другой стороны, это делает менее понятным, когда и как будет осуществляться доступ к базе данных. При неявной нагрузке легко написать неэффективный код, который делает одну транзакцию DB для каждой строки, которая будет извлекаться из таблицы.
Значит, вы подразумеваете, что для связанных таблиц требуется явно ленивая загрузка? – Tarik
Нет. Неявная загрузка означает, что связанные таблицы автоматически загружаются в фоновом режиме. –
.. больше похоже на передний план. Выполнение будет заблокировано до тех пор, пока оно не будет извлечено. –