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#的初学者在这里呼唤着! 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
页:
[1]