我想问一下LinqToSql查询的执行时间
根据我的理解参考这个MSDN blog,看来LinqToSql查询只会在1.Iuueryable的属性被访问时执行
2. IQueryable的函数(不返回IQueryable / IEnumeration类型)被称为
但是,我做了一个类似的实验:
<audio controls width="50" height="50">
<source src="http://hi5.1980s.fm/;">
</audio>
我的问题是:为什么我仍然为“s2”获得“2”!!!!!!!!!!!!!!! ?????????????? / strong>
根据我的理解,if let UploadVC = self.storyboard?.instantiateViewControllerWithIdentifier("UploadMain") as? UploadMain {
UploadVC.ISBNstring = self.detectionString!
}
应该再次连接到DB并获得新的Value2。为什么我仍然得到旧的价值?
感谢所有对我的问题感兴趣的人。
答案 0 :(得分:0)
只要在此行上获得Value1,就会调用db
string s1 = ents.first().Value1;
然后它将对象保存在内存中(与Value2一起)。当您尝试访问Value2时,它不会再次调用数据库。
答案 1 :(得分:0)
最后,我想我找到了工作原理。 L2S真的像
一样工作LinqToSql查询只会连接到数据库并执行时
- 正在访问IQueryable的财产
- 被称为IQueryable的函数(不返回IQueryable / IEnumeration类型)
醇>
但另外,在第一次L2S从DB获取每条记录的数据之后。它将通过PK缓存记录。
最后,每次进一步获取。它将检查记录是否已被提取。
P.S。缓存记录的生命周期将持续到DBContext被释放为止。