我有两个数据库。一个来自Oracle 10g。另一个来自Mysql。我已经使用Nhibernate for Oracle配置了我的Web应用程序,现在我需要使用MySQL数据库。那么如何配置hibernate.cfg.xml以便我可以在同一个应用程序中同时使用这两个数据库呢?
我当前的hibernate.cfg.xml是:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="connection.connection_string">Data Source=xe;Persist Security Info=True;User ID=hr;Password=hr;Unicode=True</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.Oracle9Dialect</property>
<!-- mapping files -->
<mapping assembly="DataTransfer" />
</session-factory>
</hibernate-configuration>
答案 0 :(得分:2)
您可以检查nhibernate的“Burrow”插件
http://nhforge.org/wikis/burrow/introduction.aspx
Multiple databases support. multiple databases becomes easy, you don't need a SessionFactoryPath, you simply give Burrow an entity type, and Burrow will find the right ISession for you. If you are using GenericDAO, the multiple DB support can be very transparent - your code does not need to know there are multiple databases.
似乎你也可以使用unhaddins,没有使用它,我没有找到文档。 http://code.google.com/p/unhaddins/
我很久以前就不得不这样做了,我跟着这篇文章,这是一个更复杂的解决方案,但我会粘贴以防万一。
http://www.codeproject.com/KB/aspnet/NHibernateMultipleDBs.aspx
答案 1 :(得分:0)
这可能是一个更简单的解决方案。它提供了一个新功能,允许hibernate配置通过赋予它们名称来拥有多个会话工厂元素,并扩展NHibernate.Cfg.Configuration.Configure以接受sessionFactoryName。
Configure NHibernate hibernate.cfg.xml file to have more connection strings