Linq 使用小心得

Linq查询操作的三步骤:
1.准备数据源
2.创建查询
3.执行查询

一般情况下,查询变量本身不会保存查询结果,而是存储查询命令。执行Linq查询存在两种方式:
延迟执行:
    是指查询表达式不是在其被创建时执行,而是当需要访问(如使用 foreach 语句)该查询的结果才执行查询表达式。
立即执行:
    是指查询表达式在其创建时就立即执行。如包含了Sum()、Count()等查询操作的查询表达式。



ContractedBlock.gif ExpandedBlockStart.gif 小摘要
None.gifLINQ的确给人耳目一新的感觉,因为其是C#3.0扩展的新语法,直接将查询语言与编程语言集成在一起了,用起来确实方便。
None.gif
None.gif这并不影响系统的分层设计,分层设计依然是软件设计的好方法,只是你又有了更厉害的武器LINQ而已。
None.gif
None.gif但你不能因为有了这个宝贝就处处使用它,因为并非所有的地方都适合LINQ的。
None.gif
None.gifLINQ毕竟是通过离散的内存对象来访问数据的,在海量数据处理的应用中,建立一个个的内存对象来处理数据的开销往往是天文数字。所以,O
/R Mapping一般都是用在处理少量数据的情况,对象化的处理可以带来方便。
None.gif
None.gif还有就是查询语言与编程语言集成也带来另一个问题,就是查询代码的“硬化”。所谓代码硬化,指的是代码被人为或自动写死,并在运行时不可更改。也就是说,“硬化”的代码遇到数据结构变化或查询需求变化时,需要重新修改源代码,再生成运行版本,这是“硬化”代码的通病。
None.gif
None.gif而以前的SQL语句本身是编程语言的字符串数据而已,因此可以把SQL逻辑独立出来形成外部SQL文件或数据库内的存储过程,当数据库需求变化时,可以在不停止系统运行的情况下修改这些SQL逻辑完成需求变更。甚至有些做得好的数据库系统是以“数据字典”驱动的,数据结构的任何变化都不影响编程语言的源代码。
None.gif
None.gif当然,你也可以通过动态生成LINQ并即时编译的办法来独立查询逻辑等,有兴趣可以试试。
None.gif
None.gif总之,任何东西都有利有弊,要看具体情况而定。表现层、业务层和数据层也并非一定要从物理上划分,只要逻辑上存在分层即可,只要简化设计帮助人们理解即可。
None.gif

 

转载于:https://www.cnblogs.com/kiant71/archive/2008/12/23/1752047.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值