SubSonic:我想要的动态查询

     以旁观的态度看了Linq to sql 很久了,没有之际运用的机会,表达式的语法很优美,易用性更是没话说,性能也没什么大问题,只是目前的开发工作始终是面向2.0,似乎升级的可能性很小,不可否认现在很多公司还用1.1开发,asp.net mvc框架亦如此,感觉还是monorail比较靠近自己。无论怎么说,日常的开发工作总是要面对一些重复的代码劳动,于是就有了代码工人的说法。不可否认,中小型程序开发,基本上很大部分都是基于数据驱动的开发,我们有了数据库,我们写代码,完工。好吧,既然这样我选择先当一名会取巧的工人,也就是会偷懒啦。好拉,说了那么多,下面这个东东,基本满足了我的要求。

先看下新版本的特性,就是下面的语法吸引了我的注意,原先的版本,数据操作都是基于 Active Record模式的,对单表操作支持很不错,但是多表就无能为力。现在简介明了,基本上T_sql的操作都有对应的API,如果你想用存储过程的话,那么SubSonic也是个不错的选择,因为它会帮你生成代码,这些代码将存储过程包装为方法,让你可以直接调用。现有的版本挺不错的,基本上要用的都有对应的解决方案!

Northwind.DB.Select().Top("5").From(Northwind.Product.Schema).ExecuteTypedList<MyProduct>();

这里的代码支持都是基于代码生成的,并不是运行时得到的。在你构架Web得时候,这些代码就会根据你的配置文件生成了。代码生成是基于模板的,而模板是我们熟悉的aspx文件,如此得亲近!因为代码是生成的,所以没有性能的损失,面对数据库的更改,其也能轻松面对。可以看到,语法很熟悉,没有编译器的天然支持,也能实现如此易用而优美的语法,这方面NBear做得也很强,并且两者也有很多相似的地方,Nbear提供了很多特性,应该说是工具吧,易用的同时,性能方面有一点点的损失,Mapping用动态生成IL,佩服作者,希望下个版本来得更猛烈些!两个都是很不错的框架,我觉得这两个东西都应该是Web开发者手中不可缺少的开发工具,它们能让我们的开发变得简单很多!
如果我们想得到原生态的DataReader,那么很简单
IDataReader rdr=new Query(Northwind.Product.Schema).ExecuteReader();


加入分页,只要设置Query对象得PageSize 和PageIndex 即可,直接连接,只要你按.就可以,我想不到有什么理由可以拒绝使用如此好用的工具!
更多动人的特性可以看看这个
http://subsonicproject.com/2-1-pakala/subsonic-version-2-1-pakala-preview-the-new-query-tool/
我想上面的演示会让你动心的。
其实我觉得SubSonic的框架先进性是落后于其易用性得,我想这也是它的成功之处,产品最终是拿来用的,SubSonic充分考虑到了易用性和方便性,这一点是很强的。关于查询的语法可以看官方网站上的示例,上面也有几个视频,挺不错的,不过要很有耐心才能看,呵呵。接下来会有一个实际的例子,因为项目的需要,定下来用monorail+SubSonic,没错,也就是Ceims啦。终于有机会动手了,不过要考完试之后!
posted @ 2008-05-17 22:14  Awen  阅读(1686)  评论(1编辑  收藏  举报