仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3465|回复: 19
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之扩大LINQ to SQL以撑持批量删除仓酷云

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:43 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。比来,博客园的老赵在其博客上宣布了一篇博客文章,个中谈到了一种扩大LINQtoSQL以撑持批量删除数据的办法,可让我们便利天时用Lambda表达式来举行批量删除的操纵。
LINQtoSQL要依据前提批量删除数据,一般的做法都是编写SQL语句,并经由过程DataContext的ExecuteCommand办法来实行删除操纵。如许的办法很间接,可是不敷天然,如老赵所说:
我一直以为,在程序里呈现间接的SQL语句是一件很丑恶的事变。在我看来,数据库操纵应当被封装起来,而关于使用层的开辟职员来讲,眼中应当只要对象——退一步的话也可向数据库发送指令(就是利用存储历程)。
在此之前,老赵也写过相似扩大LINQtoSQL的文章,其使用了LINQtoSQL中Translate办法来修正静态天生的SQL语句。不外,此次关于批量删除的扩大,老赵利用C#3.0的新特征——扩大办法,来针对System.Data.Linq.Table完成了一个名为Delete的扩大办法,在援用了这个扩大包后,就能够经由过程以下相似的代码来举行批量删除数据的操纵:
ItemDataContextdb=newItemDataContext();
db.Items.Delete(item=>item.CreateTime<DateTime.UtcNow.AddMonths(-1));
扩大还撑持更庞大的删除前提
ItemDataContextdb=newItemDataContext();
db.Items.Delete(item=>
item.CreateTime<DateTime.UtcNow.AddMonths(-1)||
item.ViewCount<item.CommentCount&&item.UserName!="jeffz");
老赵的这类办法,是对Lambda的表达式树举行剖析后天生DELETESQL的Where前提子句。他利用了三个步骤来完成这个剖析事情:


  • 利用PartialEvaluator将表达式中的常量间接盘算出来(比方“3*3”表达式将被交换为“9”),同时也会将一些存储在变量中的值利用常量举行交换。
  • 利用ConditionBuilder将表达式中的常量搜集起来,并天生带参数的Condition表达式(比方“[CreateTime]<{0}AND[UserName]{1}”)。
  • 利用DataContext.ExecuteCommand办法实行完全的SQL语句。
而别的一个博主,BlackJack,在老赵文章的提醒下,利用了一种“投机倒把”的体例来天生批量删除数据的SQL语句。他的思绪是,从Query中猎取主动天生的SELECTSQL语句,并将其改革为DELETESQL语句。改革的时分利用正则表达式来举行查找和交换。关于这类体例的具体做法,能够扫瞄LinqtoSql:批量删除之投机倒把版这篇文章。
关于这类扩大LINQtoSQL以撑持批量删除的做法,有些人以为仍是间接编写SQL更便利。但是,愈来愈多的人都在主动实验扩大LINQtoSQL,如许可让我们既取得LINQtoSQL带来的优点,又能完成一些更庞大的功效。
来自:http://www.infoq.com/cn/news/2008/04/linq-to-sql-ext-batch-deletion
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!
再见西城 该用户已被删除
沙发
 楼主| 发表于 2015-2-23 01:19:01 | 显示全部楼层
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 19:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表