DeferredLoadingEnabled - как это работает? - PullRequest
3 голосов
/ 04 ноября 2011

У меня есть несколько таблиц, включая «объединение» в отношениях «многие ко многим».Я хочу сделать сейчас операцию вставки.

Я слышал о DeferredLoadingEnabled в linq2sql, и я знаю, что это связано с этой темой, но я не совсем знаю, как это работает?

Например

[ClientTable]: ClientId, ClientName, Phone, Age
[CityTable]: CityID, CityName, Country
[ClientCityTable]: ClientCityID, ClientID, CityID

Можеткто-нибудь покажет это на этом простом примере или предоставит какую-нибудь симпатичную ссылку?

1 Ответ

8 голосов
/ 04 ноября 2011

Это не имеет абсолютно никакого отношения к вставке.

Отложенная загрузка означает, что Linq-2-sql отправится в базу данных, только когда вы фактически используете связанные таблицы.

В вашемНапример, если вы загрузите [ClientCity], то название города не будет загружено до тех пор, пока вы его не используете.

Так что если вы сделаете:сделайте что-то вроде:

string x = thisOne.CityTable.Cityname

Только в это время CityTable загружается из БД.

Это может быть здорово, если вам нужен только город, но это может привести к N +1 запрос, как только вы перейдете ко всем вашим CityTables

Есть много ссылок вокруг.Например: http://msdn.microsoft.com/en-us/library/bb399393.aspx

или http://www.west -wind.com / weblog / posts / 2009 / Oct / 12 / отложенная загрузка и предварительная выборка LINQ-to-SQL

...