在我们的系统中,我们使用的是 nhibernate 和 Oracle。我们总是遇到很多部署问题,因为 Oracle.DataAccess.dll 和安装在我们客户端服务器中的 Oracle 客户端之间的关系是一团糟。
有时我们可以更改已安装的 oracle 客户端,有时则不能。有时我们需要 32 位版本的 dll,有时需要 64 位版本。我希望我可以更改 oracle 以获得更友好的数据库,但目前这不是一个选择。
摆脱所有这些混乱的一种方法是使用 DbProviderFactories,因此我的项目中没有 Oracle.DataAccess.dll 的引用,而使用服务器上安装的任何版本。
如何配置 nhibernate 以使用 DbProviderFactory?
我的配置:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.Oracle9iDialect</property>
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
<property name="connection.connection_string">Data Source=XE; User Id=*****; Password=******;</property>
<property name="current_session_context_class">NHibernate.Context.ManagedWebSessionContext, NHibernate</property>
<property name="sql_exception_converter">Way2Pim.Data.NHibernate.SqlExceptions.SqlExceptionConverter, Way2Pim.Data</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.keywords">none</property>
<mapping assembly="MyAssembly" />
</session-factory>
</hibernate-configuration>