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)
有人可以在这个简单的例子中展示它还是提供一些不错的链接?
它与插入完全无关.
缓冲加载意味着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
| 归档时间: |
|
| 查看次数: |
2714 次 |
| 最近记录: |