再见西城 发表于 2015-1-18 11:29:43

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

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表达式(比方“<{0}AND{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。

因胸联盟 发表于 2015-2-7 19:11:59

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?

再见西城 发表于 2015-2-23 01:19:01

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

简单生活 发表于 2015-3-2 01:05:17

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

分手快乐 发表于 2015-3-7 03:16:29

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

莫相离 发表于 2015-3-12 16:35:42

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。

山那边是海 发表于 2015-3-19 23:55:13

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

灵魂腐蚀 发表于 2015-3-26 20:52:48

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

小妖女 发表于 2015-3-31 18:58:07

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

变相怪杰 发表于 2015-4-6 22:09:55

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

活着的死人 发表于 2015-4-7 21:26:01

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

飘灵儿 发表于 2015-4-16 14:26:23

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。

柔情似水 发表于 2015-4-16 22:11:45

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

海妖 发表于 2015-4-21 19:18:30

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

飘飘悠悠 发表于 2015-4-22 07:04:53

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

深爱那片海 发表于 2015-4-23 01:31:17

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

只想知道 发表于 2015-6-10 22:20:20

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
页: [1]
查看完整版本: ASP.NET网页编程之扩大LINQ to SQL以撑持批量删除仓酷云