LinqToSql查询执行时序

时间:2016-07-08 04:20:12

标签: c# sql database linq linq-to-sql

我想问一下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。为什么我仍然得到旧的价值?

感谢所有对我的问题感兴趣的人。

2 个答案:

答案 0 :(得分:0)

只要在此行上获得Value1,就会调用db

string s1 = ents.first().Value1;

然后它将对象保存在内存中(与Value2一起)。当您尝试访问Value2时,它不会再次调用数据库。

答案 1 :(得分:0)

最后,我想我找到了工作原理。 L2S真的像

一样工作
  

LinqToSql查询只会连接到数据库并执行

     
      
  1. 正在访问IQueryable的财产
  2.   
  3. 被称为IQueryable的函数(不返回IQueryable / IEnumeration类型)
  4.   

但另外,在第一次L2S从DB获取每条记录的数据之后。它将通过PK缓存记录。

最后,每次进一步获取。它将检查记录是否已被提取。

  1. 是的,它将使用记录的缓存版本而不是数据库版本。
  2. 如果不是,它将使用数据库版本。
  3. P.S。缓存记录的生命周期将持续到DBContext被释放为止。