FluentNHibernate+NHibernate4.1+Oracle12c+VS2013 数据连接配置说明

来源:互联网 发布:淘宝数据包导出 编辑:程序博客网 时间:2024/06/05 10:24

最近有空研究了一下FluentNHibernate,配置SQL数据库连接比较容易,配置Oracle12c却花费了很多时间,找了大量的资料,国内关于FluentNHibernate+Oracle12c的资料非常少,最后在国外网站才找到解决配置文件问题。下面介绍一下解决过程。

1、nuget 程序包管理器安装FluentNHibernate.2.0.3.0、NHibernate.4.1.1.4000、Oracle.ManagedDataAccess.12.2.1100,目前都是最新版本。

2、hibernate.cfg.xml配置文件如下:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <!--需要installed the "Oracle.ManagedDataAccess" nuget package  Oracle.ManagedDataAccess.12.2.1100-->
    <property name="connection.driver_class">NHibernate.Driver.OracleManagedDataClientDriver</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>
    <!-- 连接Ocacle方法1 不用解释,直接连接数据库-->
    <!--<property name="connection.connection_string">User Id=System;Password=Zjjw2017;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.176.105.104)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))</property>-->

    <!--连接Ocacle方式2 ORCL1为创建的实例 -->
    <property name="connection.connection_string">User ID=System;Password=Zjjw2017;Data Source=ORCL1</property>

    
    <property name="dialect">NHibernate.Dialect.Oracle12cDialect</property>
    <property name="command_timeout">10</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.keywords">none</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory,NHibernate</property>
  </session-factory>
</hibernate-configuration>


3、ISessionFactory

/*NHibernate  (hibernate.cfg.xml文件属性->生成操作:嵌入的资源)*/

FluentNHibernate.Cfg.Fluently.Configure(new NHibernate.Cfg.Configuration().Configure())
                            /*映射程序集  Customer(客户实体类) */
                          .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Customer>())
                     .BuildSessionFactory();