VS2008的Linq,更新数据就那么费劲?
日期:2008年4月14日 作者: 查看:[大字体 中字体 小字体]-
用.Net两年了,也积累了一些知识和经验,觉得应该做出点自己的东西,而并不只是给别人打工。
所以决定利用最新发布的VS2008(Orcas) Beta2也加入到WEB 2.0的大潮中来,一来是学以所用,二来在实践中掌握最新的技术。
现在流行在开发阶段给项目起个Code Name,我也来凑凑热闹,就叫Pluto,以纪念不久前被剥夺九大行星资格的我们天蝎座的守护星——冥王星
平时有自己的工作,只能利用不多的业余时间开发,所以预计(争取)在VS2008正式发布之际,Pluto也能开发完成。
在这里,我会记录下开发Pluto中的一些事情。
WEB 2.0的网站少不了数据库、数据访问,也是一切操作之本,而VS 2008中最大的亮点之一Linq也恰巧是做这个的,所以我的开发从Linq、从数据库开始。网上关于Linq的教学铺天盖地,我不准备重复,我只写下我遇到的问题。
Linq,更新数据怎么就那么费劲?
Linq的全称是Language Integrated Query ,也就是说Linq是以一个查询语言的方式出现在我们面前的。在查询方面Linq做了不少的优化,我们不用在费尽心思去拼装SQL语句、组装实体等,所有操作在Linq里都是强类型的,我们用C#代码轻松地写出漂亮的SQL语句。
那么做为一个查询语言,Linq在数据更新方面又是怎么表现的呢?通常来说Linq的更新会以以下的方式出现(绝大部分教程中都是这么写的)
1var ctx = new MyDataContext();
2var user = ctx.Users.Where(u => u.UserId == userId).Single();
3user.UserName = "New User Name";
4ctx.SubmitChanges();
这些是C#代码,但是背后做了什么呢?Linq会为我们生成类似一下的SQL语句
1--第一步,查询
2SELECT UserId, UserName, FirstName, LastName, CreatTime From User WHERE UserId = @userId
3
4--第二部,更新
5UPDATE User SET UserName = @newUserName
6WHERE UserId = @oldUserId, userName = @oldUserName, FirstName = @oldFirstName, LastName = @oldLastName
发现了什么?首先Linq会取出所有的字段,在user.UserName = "New User Name"的时候,记录下UserName字段被更新过了,UPDATE时会只更新UserName,但是把之前所有字段的值放在WHERE语句里来做为条件。
Are you kidding?! 这样的效率实在是太差了吧?!
抛开效率问题,接下来我们看另外一种更新,有个某个字段记录页面被访问的次数,平时我们会用
1UPDATE POST SET Views = Views + 1 WHERE PostId = @PostId
但是如果我们写下如下C#代码
1var ctx = MyDataContext();
2var post = ctx.Posts.Where(p => p.PostId = @postId).Single();
3post.Views++
4ctx.SubmitChanges();
Linq会怎么做呢?和上面一样!取出所有字段,把View加一,用所有字段做为条件(包括Views),更新回去。
设想一下,这样一个被频繁使用的计数器,两次操作出现SELECT与UPDATE交叉情况的可能性很大,那么后者还能更新成功么?
微软就是这样解释的,如果在你更新过程中,有其他人更新了这一行,那么这一行也就不是你所需要的那一行了,为了防止这样的冲突,所以把所有字段都放在WHERE语句中,这是by design的。 - [1] [2] [3] 下一页
-
- VS2008的Linq,更新数据就那么费劲? 相关文章:
- ·Asp.net(c#)数据库操作类
- ·VS2008的Linq,更新数据就那么费劲?
- ·数据库连接字符串大全
- ·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- ·UDT协议-基于UDP的可靠数据传输协议
- ·数据结构C语言实现系列——线性表
- ·巧用Excel函数来实现工作表间的数据关联
- ·VB的数据库类型源码60实例下载
- ·Oracle数据库检查死锁的sql
- ·在Excel中将连续多列相同数据项合并
- VS2008的Linq,更新数据就那么费劲? 相关软件
- ·DataExplore数据恢复大师 V2.5
- ·好优数据恢复大师专业版 V1.0
- ·数据结构与算法
- ·腾讯QQ IP数据库纯真版 Build 0325
- ·网络数据包拦截软件(Visual Sniffer) V1.01
- ·数据病毒木马暴力杀灭天王 PowerRmv V1.0
- ·ACCESS数据库密码破解专家 V2.0
- ·《金卡绣球》股票数据转换宝 V2006
- ·MIS数据库 V10.0
- ·统计软件-数据处理-简明统计分析(CS) V10.32
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:谷歌将与天涯合作推出社区问答服务
精品推荐
热点TOP10
- ·西门子的员工手册
- ·女子英文名字含义\来历
- ·魔波病毒补丁下载
- ·中国军事网被黑
- ·VS2008的Linq,更新数据就那么费劲?
- ·国外最新杀毒软件排行榜
- ·一牛人收集的破解软件站网址大全
- ·全球500家最大公司及网址
- ·全球最著名的16位黑客列传和黑客简史(附个人相片)
- ·51.com 招聘信息
- ·高校两师生经营色情网站 发布各地色情场所报价
- ·艳照门敲响隐私保护警钟 文件不能一删了之
- ·Ubuntu 8.04 Alpha 2发布并下载
- ·购二手电脑必看 简单修改系统信息
- ·英文名起名取名字技巧+英语姓名小常识
- ·网站设计:600个经典网站
- ·微软提供的功能强大的ASP-HTML转换工具.它将常用的ASP脚本转换为HTML从而减轻服务器的负担
- ·索尼推出PSP电影网站 可以免费下载电视节目
- ·FixName破除中文文件名乱码
- ·Gmail的独特SMTP
