首页 新闻 赞助 找找看

请问linqToSql及linqToEntity什么时候打开连接数据源?

0
悬赏园豆:10 [已解决问题] 解决于 2013-06-03 16:50

比如linqtosql

1.var products=from p in myDataContext.Products

       where p.id<20

       select p;

2.products=products.OrderByDescending(o=>o.createTime);

3if(queryParam.ContainsKey("Query_starttime"))

{

  products=products.where(o=>o.createTime>=Convert.ToDateTime                       (queryParam["Query_starttime"]));

}

4foreach(var  prodectItem in prodects)

{

  console.writeline("商品名称{0}",prodectItem.productName);

}

一.2和3的时候会打开连接数据源吗?会2,3都会去执行一次查询语句来改变products中的数据,还是去修改查询语句,等到4的时候再去打开数据源执行查询语句?

二.如果把1中查询出来的数据ToList()又会有什么不同?

三.对于ef又有什么不同吗?

因为初学所以提出的问题可能本身就有错误,所以请大家多包涵。

月下*独的主页 月下*独 | 初学一级 | 园豆:128
提问于:2013-05-30 09:39
< >
分享
最佳答案
0

一: from p in myDataContext.Products这里有myDataContext.Products实际已经是打开了,并查询结果保存到products里,2和3不会再查询,而是将内存中的products做数据处理,4也不会去打开数据库源,也是从1中已经存到products里的数据做读取。

二:没什么不同,只是2,3里面的排序或筛选要自己重新写过,其最底层操作都是一样的

三: 就读取来说,差别不大

 

以上答案纯主观分析理解仅做参考

收获园豆:10
WuRang | 小虾三级 |园豆:1730 | 2013-05-30 09:53
其他回答(1)
0

楼上说的有些意思

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-05-30 10:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册