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 才从数据库中加载。

如果您只是偶尔需要城市,这可能会很棒,但是一旦您循环到所有 CityTables,它就会导致 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 回答