Судя по вопросу, Вы имеете ввиду Entity Framework?
По поводу lazy loading есть отличная
статья Джулии Лерман от '11 года. Несмотря на то, что статья довольно старая, она актуальна.
Здесь краткий пример использования технологии, а
здесь - официальное описание.
В общих чертах Lazy Loading работает через создание прокси классов над Вашим кодом, который обеспечивает вызов методов загрузки - cвоеобразная реализация dependency injection.
Загрузка связных сущностей осуществляется при обращении к свойству навигации (поведение по умолчанию), однако Вы можете указать фреймверку непосредственно загрузить связные объекты посредством метода Include.
Свойство навигации - это свойство типа или списка типа, такое, что тип представляет собой другую сущность в той же модели данных.
Lazy loading можно непосредственно отключить в конструкторе контекста или указать непосредственную загрузку методом Include как писалось ранее.
На модель данных способ загрузки не оказывает иного влияния, кроме создания прокси классов.
Обращение к сущностям происходи прозрачно, через оператор ".", как к свойствам объекта.