用NHibernate 链接oracle可以有多种写法,这里列出两种:
1. 使用 NHibernate.Driver.OracleClientDriver
(原文链接 http://ddbiz.com/?p=111)
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="app.framework" >
<!-- properties -->
<property name='proxyfactory.factory_class'>NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string">Data Source=appdb;user id=app_user;password=app_user_password_here</property>
<property name="default_schema">APP_ADMIN</property>
<property name="show_sql">true</property>
<property name="use_outer_join">false</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<!-- mapping files -->
<mapping assembly="app.framework.core" />
</session-factory>
</hibernate-configuration>
2. 使用 OleDbDriver 驱动
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="app.framework" >
<!-- properties -->
<property name='proxyfactory.factory_class'>NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="connection.driver_class">NHibernate.Driver.OleDbDriver</property>
<property name="connection.connection_string">
Provider=OraOLEDB.Oracle.1;User ID=app_user;Password=app_user_password_here;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.1.5)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = appdb)))
</property>
<property name="default_schema">APP_ADMIN</property>
<property name="show_sql">true</property>
<property name="use_outer_join">false</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<!-- mapping files -->
<mapping assembly="app.framework.core" />
</session-factory>
</hibernate-configuration>
这几种链接方式,在应用中transaction/error的处理也都不相同。下面我们举几个例子来看:
《待续》