DeferredLoadingEnabled - 它是如何工作的?

Sai*_*int 3 c# many-to-many linq-to-sql deferred-loading

我有几个表,包括多对多关系中的"组合".我想现在进行插入操作.

我在linq2sql中听说过DeferredLoadingEnabled,我知道它与这个主题有关,但我不太清楚它是如何工作的?

例如

[ClientTable]: ClientId, ClientName, Phone, Age
[CityTable]: CityID, CityName, Country
[ClientCityTable]: ClientCityID, ClientID, CityID
Run Code Online (Sandbox Code Playgroud)

有人可以在这个简单的例子中展示它还是提供一些不错的链接?

Ple*_*eun 8

它与插入完全无关.

缓冲加载意味着Linq-2-sql只有在您实际使用链接表时才会进入数据库.

在您的示例中,如果您加载[ClientCity],则不会加载Cityname,直到您实际使用它.

所以,如果你这样做:

var thisOne = db.ClientCities.Single(a=>a.id == 1);
Run Code Online (Sandbox Code Playgroud)

在您执行以下操作之前,不会加载CityTable实体:

string x = thisOne.CityTable.Cityname
Run Code Online (Sandbox Code Playgroud)

仅在那时,CityTable从db加载.

如果您只是偶尔需要城市,这可能会很棒,但只要您循环到所有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