为啥不用ActiveRecord

首先,AR的改进之一是用特性来替换映射文件。

称这样能减少代码,提高开发效率,但是用Nhibernte大部分人也不会手写代码,而是通过工具生成,这样这点其实优势不大。

不可否认这样做在修改时更方便,不用修改两个文件(DRY)。

但是缺点也很明显,特性不可能完全映射配置文件,否则特性会把类弄的很乱,这也使AR只能是Nhibernte的子集。另一个缺点是,特性使域对象变的不单纯,移植性差。再一个,特性效率也比不是解析xml

其次,AR给每个域对象增加了基类,这点同样是域对象难以移植,恰巧移植性是Nhibernte的优势。

还有,ARSession的管理,是他的一大优势。一些项目如Cuyahoga,只用到了ARSession管理,而没有用其他的封装。但是最新的Nh1.2)也逐渐提供了内置的Session管理,这也变的不很必要。

再一点,如果不懂Nhibernate,我相信只看ARAPI也很难实现些复杂的应用。

因此对于新手来说,最好从Nhibernte开始,然后过渡到AR

AR应该在其他方面多做些工作,而不是单纯的去封装NhAPI,如提供些好的业务层模式的封装,可以使更好的分离业务逻辑,就像现在的Customquery,实现可以把复杂业务规则封装为一个类。

还有,发挥Castle的优势,在动态的生成些可以改进NhSession缓存的IL

你可能感兴趣的:(ActiveRecord)