3

多対多の関係にある「結合」を含むいくつかのテーブルがあります。今から挿入操作をしたいです。

linq2sqlでDeferredLoadingEnabledについて聞いたことがあり、このトピックに関連していることは知っていますが、どのように機能するのかよくわかりません。

例えば

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

誰かがこの簡単な例でそれを示したり、いくつかの素晴らしいリンクを提供したりできますか?

4

1 に答える 1

8

挿入とはまったく関係ありません。

遅延ロードとは、リンクされたテーブルを実際に使用するとすぐに、Linq-2-sql がデータベースに移動することを意味します。

あなたの例では、[ClientCity] をロードすると、Cityname は実際に使用するまでロードされません。

したがって、次のようにします。

var thisOne = db.ClientCities.Single(a=>a.id == 1);

次のような操作を行うまで、CityTable エンティティは読み込まれません。

string x = thisOne.CityTable.Cityname

そのときだけ、CityTable がデータベースからロードされます。

これは、都市がたまにしか必要ない場合に便利ですが、すべての CityTable にループするとすぐに N+1 クエリが発生する可能性があります。

周りにはたくさんのリンクがあります。例: http://msdn.microsoft.com/en-us/library/bb399393.aspx

またはhttp://www.west-wind.com/weblog/posts/2009/Oct/12/LINQ-to-SQL-Lazy-Loading-and-Prefetching

于 2011-11-04T15:44:20.930 に答える