2009-10-08 5 views
1

Как можно ленить загрузку ассоциации (EntitySet) в LINQ to SQL? Вы не можете установить Delay Loaded on Associations в конструкторе, и я не мог найти для него атрибут DBML. Я посмотрел на DataLoadOptions, чтобы узнать, есть ли способ лениво загрузить их таким образом, но DataLoadOptions действительно предоставляет способ форматировать SQL, который генерируется для свойств и ассоциаций (и принудительная загрузка ленивых загруженных свойств).LINQ to SQL: Lazy loading ассоциация

Это очень важная функция для нас, так как у нас есть довольно тяжелый граф объектов, который попадает в БД. При загрузке некоторых объектов верхнего уровня я не хочу загружать связанные с ними субистемы, пока пользователь не запросит эти данные. Это легко сделать для отдельных свойств, но я не могу найти способ сделать это для ассоциаций. Кажется, что коллекция EntitySet поддерживает концепцию, поэтому должен быть способ.

ответ

3

Lazy loading включен по умолчанию в Linq to SQL - для поддержки этой функции используются EntitySet и EntityRef.

+0

Интересно. Отражено ли это в документации? Имеет смысл, что EntitySet по умолчанию пользовался ленивой загрузкой, но я не вижу его нигде в документах. –

+0

Microsoft называет это «Отложенная загрузка» вместо Lazy Loading. Посмотрите в следующей документации MS для Linq to SQL. http://msdn.microsoft.com/en-us/library/bb425822.aspx и выполните текстовый поиск «отложенной загрузки» (вы также найдете отложенное выполнение, которое является чем-то еще) –