这次增加的新功能有:
1.Oracle数据库支持(使用System.Data.OracleClient或ODP.NET驱动程序都可以)
2.支持Oracle的如下现实:
1)Sequence生成自增PK
2)CUD By 存储过程
3)数据库分页
3.涵盖了所有ADO.NETAPI的ISqlHelper操作接口.将SqlHelper和OracleHelper整合在一起,使用Session现实,这样你的代码可以独立于具体的数据库.
4.Session自动管理,借鉴了NH中的Session管理方式,Ndo内置四种管理策略:
1). Per Web Request(用于B/S架构中,一次客户端会话,一个连接)
2).Per Process(用于单线程C/S程序,一个进程/App连接一次)
3).Per Thread(用于多线程C/S程序,一个线程一次连接)
4).Per Unit of Work(也就是Per call,适用于各种运行环境,一次工作单元一次连接)
5.工具类EntityConverter<T>,将Ado.NET数据(DataReader, DataTable, DataSet)转换为实体类。支持Ndo Attribute和自动按名称Mapping方式转换.
6.一个Web项目,Demo如何使用新的Ndo
旧功能修改:
1.不再允许用户建立SimpleDao<T>的实例,以免Session管理混乱.将构造器改成了Internal
2.提供了Configuration.AddConnection(connectionNameInConfig),给个conn string的name就行了,Ndo自动检查Dirver.
3.PostShparp版本升级到1.5.*(LazyLoad用的)
4.更新了单元测试的代码.增加了一个多线程测试程序.
5.大写NDO->小写Ndo.统一名称.
目前存在的问题:
1.HasMany只能在[LazyLoad]时有效,不过不影响使用
2.BelongsTo设置[LazyLoad]没用.
预览界面:
Unit Testing 使用 Oracle的ODP.NET 数据驱动
SQL Server 2005性能测试数据:
注意ActiveRecord底层使用NHibernate2.x,所以你可以将它看做NHibernate.
Oracle 10g性能测试数据(注意Server 内存有2G,所以快很多):
Demo Web Site
Ndo和Nhibernate的选择:
1.中小项目,不需要分布式的,对数据库移植没要求的,用Ndo.如果要支持多数据库,用NHibernate.分布式中使用ORM本来就不太适合,会影响整体的性能和伸缩性,用Xml + DataSet最好,就是所谓有的大粒度的API.
2.如果对Nhibernate掌握的不深,感觉做项目有风险的,建议用Ndo,怎么说Ndo是我们自己开发的,每一行代码心里有数.
3.想做到很灵活,可以配置HQL, SQL的用NHibernate.
4.如果要提高性能的,用Ndo + SP.
5.Ndo不支持的数据库,如Sql CE, Sqlite(以后会加上支持),用Nhibernate.
6.不想配置hbm.xml的,对继承不敏感的,用Ndo
7.不想自己处理数据库连接的,用Ndo Session Manager和ISqlHelper操作接口,再配合EntityConverter,也可以现实简单的OO
8.想非常OO的,或者你的类有自己的基类,不能使用NdoRecordBase的,用Nhibernate