仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3928|回复: 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-1-21 08:36:57 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-25 23:11:23 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-4 08:49:46 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
因胸联盟 该用户已被删除
5#
发表于 2015-2-7 19:11:59 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
再见西城 该用户已被删除
6#
 楼主| 发表于 2015-2-23 01:19:01 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
简单生活 该用户已被删除
7#
发表于 2015-3-2 01:05:17 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
分手快乐 该用户已被删除
8#
发表于 2015-3-7 03:16:29 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
莫相离 该用户已被删除
9#
发表于 2015-3-12 16:35:42 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
山那边是海 该用户已被删除
10#
发表于 2015-3-19 23:55:13 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-26 20:52:48 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
小妖女 该用户已被删除
12#
发表于 2015-3-31 18:58:07 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
变相怪杰 该用户已被删除
13#
发表于 2015-4-6 22:09:55 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
活着的死人 该用户已被删除
14#
发表于 2015-4-7 21:26:01 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
飘灵儿 该用户已被删除
15#
发表于 2015-4-16 14:26:23 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
柔情似水 该用户已被删除
16#
发表于 2015-4-16 22:11:45 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
海妖 该用户已被删除
17#
发表于 2015-4-21 19:18:30 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
飘飘悠悠 该用户已被删除
18#
发表于 2015-4-22 07:04:53 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
深爱那片海 该用户已被删除
19#
发表于 2015-4-23 01:31:17 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
只想知道 该用户已被删除
20#
发表于 2015-6-10 22:20:20 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 03:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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