使用NHibernate的多个数据库

时间:2010-04-16 17:05:33

标签: asp.net mysql nhibernate oracle10g

我有两个数据库。一个来自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> 

2 个答案:

答案 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