我支持linq to sql

Posted on 2008-11-13 10:59 A.Z 阅读(...) 评论(...) 编辑 收藏

读完 Linq to Sql与NHibernate数据库操作性能对比研究 我有很多疑问,诸如:测试是否可以重现,是否在同样的优化方式下进行,是否有测试源码供验证。

很可惜都没有,作者只给出了一个矩阵表,可见的结论是两者性能没有悬殊的差别。

但是既然在性能没有成为一个决定性条件的下,为什么NHibernate会有更好期望?

NHibernate起源于java原形的Hibernate,Hibernate在java类型的项目中如果涉及到复杂的对象操作,在默认不做干涉的情况下,影射出来的hsql真的很糟糕。linq to sql我想也是类似的不能完美的代替所有的数据库操作。

本质上对象的复杂性和表的schema的异构性决定了中间的转换需要很多的状态处理,相对数据量很小的多次插入这些状态处理同样在耗损性能。

接下来我期望的NHibernate和linq to sql的比较是在对大小项目的可伸缩性,两个数据对象框架的学习曲线的难易程度的比较,代码量的比较,可读性的比较,IDE设计器支持程度的比较,项目的配置复杂度以及后期维护的开销上的比较。

失望的是都没有。linq是附属在.net语法本身,抽象出来的一组对象操作。Hibernate是基于对象扩展,反射的一组自定义对象方法。对.net的经验完全可以用在linq to sql上,而NHibernate则需要做过java版Hibernate的背景或者去读那个Hibernate作者写的那本可以和.net本质论相媲美厚度的书。

最后提一下NHibernate是完全开源的,linq也可以去读它的代码。到底谁优谁劣,我们看大型项目的总结。