现在在.NET下做数据访问层的技术实在是太多了,选择多了就是没有选择。感觉.net对比java还太年轻需要时间来沉淀。java虽然框架多,但优秀的都沉淀下来,想都不用想都知道struts+spring+hibernate ,.net呢?单单一个数据访问就让够让人迷茫了。在ADO.NET2.0方面:SqlDataSource、强数据集(即TableAdapter方式)、手写实体类的方式(像PetShop中的方式,即像CodeSmith这样的代码生成工具生成的代码),Linq框架方面又有在Linq包装下的Linq to Sql、Linq to DataSet、Linq to Entities等方式,在ORM领域,除了Linq to Sq这个轻量级的l外,还有重量级的实体框架(Entity Framework)和在开源方面的NHibernate等。
不做三层,要求不高的小系统不用说首选SqlDataSource这种方式,当然这种没技术海量,不值钱。很多学java认为学c#简单就是因为有这种方式,零代码编程啊,很诱人吧。可是外面做项目的哪有这样用的,也就做毕业设计还不错,一周时间保证搞定。当然不是贬低这种技术,可以说这是我最佩服的微软技术,开发效率是怎么一个夸张了得。不跑题了,用强数据级做轻量级数据访问的三层架构应该是很方便。做大型网站好像都用手写实体类方式,见到的好多网站程序都是这样,像Discuz!NT、动易之类的。虽然Linq很强大,可以万般皆Linq,但是我不明白的是真的需要吗?感觉Linq就像是一个大的数据访问平台似的,想要精通Linq的代价也不是一般高的吧,虽然这不是必要的。当然Linq to Sql作为轻量级的ORM还是不错的,虽然要被Entity Framework所取代。年前Linq to Sql之死炒得挺热闹的,导致的结果是,在前景不明确的情况下博客园里学习Entity Framework的热情明显没有当年Linq to Sql那样高涨了。谁叫大家都认为Linq to Sql死了,而Entity Framework才刚诞生,质疑其成熟性。在.NET下的ORM技术应用最广泛最成熟的恐怕要数NHibernate了,这个脱胎于Java领域Hibernate的优秀开源框架。在微软的地盘上能活多久还是个未知数,虽然现在微软很支持开源,像mvc框架采用开源模式,ajax、Silverlight控件包也采用开源模式。但别忘了,ORM微软可是有自家的产品,还一轻一重,居然有两个。可以想像很能容下NHibernate多久呢?
想想最悲剧的要数讲数据访问方面的书,在市面上只有ADO.NET。讲Linq to Sql和Entity Framework的只见到台湾人写的一本。NHibernate根本没见到。
现在知道SqlDataSource、强数据集、手写实体类的方式都有各自的用途。Linq to Sql前途不是很大,可以持观望态度。Linq真的值得煞费苦心去学吗?Entity Framework和NHibernate,现在该学哪个?虽然Entity Framework前途很光明,但现在用NHibernate应该是很多吧,现在开始用Entity Framework的多吗?还有什么时候选择用强数据集,什么时候用ORM好些,或者说现在有了ORM,强数据集就过时了不建议用了。