日期:2014-05-18  浏览次数:20750 次

关于nh对多数据库支持的。
现在要开发一个项目,可支持多数据库,以前是用petshop里的那种工厂模式进行反射来做的,通过配置文件和反射来动态调用数据访问层,譬如oracle就调用OracleDAL,Sql server就是MssqlDAL。
现在数据持久层打算采用nh框架,该怎么处理呢?
我可以通过配置文件动态的载入不同的hibernate.cfg.xml,但是持久化类和映射文件呢?!
每个数据库写一个程序集么?
那样的话我在页面添加数据的时候 要调用持久类的话每次还要根据配置文件来调用不同的数据持久层的程序集么?

------解决方案--------------------
不同的数据库的Demo.hbm.xml这种映射文件有区别?

据我所知映射文件是一样的,当然我没用过oracle

主键是对NH配置,NH会根据配置去调用目标数据库的主键机制

例如:assigned guid.comb

其他主键配置你可以在网上找
------解决方案--------------------
改改配置就行了

connection.driver_class
connection.connection_string
dialect

其他基本不用动,但是如果你用了特定于数据库的功能,代码就要改了
------解决方案--------------------
主键的问题,可以试试 native
------解决方案--------------------
我以为NH是去调用数据库的主键机制,看样子是我错了。

NHibernate为我们提供了很多方式来为新实体创建或定义主键值。我个人推荐的两个ID生成器是:HiLo生成器和GuidComb生成器。

HiLo生成器生成整数作为主键值,而GuidComb算法生成的GUID,为数据库中的索引进行了优化。使用.NET框架的标准算法生成的GUID不太合适,所以NHibernate以GuidComb生成器的形式提供了自己的实现。