LINQ to SQL: как EntitySet выполняет отложенную загрузку объектов?

Я пытался реализовать собственный ORM для нашего проекта, и мне интересно узнать, как LINQ to SQL или Entity Framework объекты отложенной загрузки.

Я читал кое-что о EntitySet и понял, что у него есть Load() метод. Кто-нибудь знает, как именно работает Load? Я предполагаю, что у него должна быть ссылка на DataContext (или ObjectContext в EF) для загрузки запрошенных объектов.


person Mosh    schedule 02.09.2010    source источник


Ответы (3)


Точно. Ленивая загрузка работает, только если объект все еще привязан к контексту. Обычно он реализуется как прокси поверх некоторой коллекции или объекта, поэтому при первом доступе к прокси он загружает объект или коллекцию.

person Ladislav Mrnka    schedule 02.09.2010

Вот статья о типах. выполнения запроса в LINQ to SQL.
Что касается Entity Framework, вот аналогичная статья .

person Devart    schedule 02.09.2010

Спасибо. Но я только что понял, что прокси используется с объектами POCO, и если вы используете код, созданный дизайнером, прокси не создается. В этом случае я заметил частное (или, возможно, внутреннее) поле, указывающее на ObjectContext. Таким образом, сущность может взаимодействовать с ObjectContext для запроса дополнительных данных, если это необходимо.

person Mosh    schedule 03.09.2010