visual studio 2017使用NHibernate4.0连接oracle11g数据库

时间:2023-03-09 21:08:35
visual studio 2017使用NHibernate4.0连接oracle11g数据库

之前一直是公司用NHibernate2.1来做项目,连接oracle 10g的数据库,配置NHibernate的东西都是以前的同事做好了的,也怪自己太懒了,没尝试过配置这个东西,虽然一直在使用NHibernate做项目,前几天突然有想法想用NHibernate自己做一个项目,才发现配置一个NHibernate并没有想象中的简单,前前后后大概花了五天时间,也算是功德圆满,终于成功了!另外,网上找到的关于NHibernate的资料,大多数都是配置sql server数据库的,关于oracle这方面的资料也是实在是少,以免大家少走弯路,写个关于oracle的配置文章!

开发环境:   visual  studio 2017 Pro+oracle 11g(64bit)+NHibernate 4.0.0.4000

运行环境:  windows 10  Pro (64bit)

一、前言

NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

在项目中安装NHibernate 4,我使用的是NuGet下载安装到我的项目中的;

项目结构:

visual studio 2017使用NHibernate4.0连接oracle11g数据库

NuGet安装NHibernate

第一步

visual studio 2017使用NHibernate4.0连接oracle11g数据库

第二步,在浏览下输入你要添加的引用,在要添加引用的项目上打上勾

visual studio 2017使用NHibernate4.0连接oracle11g数据库

二、oracle配置 

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="NHibernateConfig">
<!--此处需要使用oracle公司官网提供的客户端驱动[我使用的版本为:32bit的ODTwithODAC112012.zip],微软framework4.0之后就移除了oracle连接dll-->
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<!--配置连接Oracle数据库字符串-->
<property name="connection.connection_string">
User ID=informix;Password=gmgl;Data Source=glxt
</property>
<!--输出所有SQL语句到控制台-->
<property name="show_sql">true</property>
<!--dialect属性支持的方言选项值-->
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<!--将Hibernate查询中的符号映射到SQL查询中的符号-->
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<mapping assembly="informix.Model" /><!--此处指向的是项目Model层的程序集-->
</session-factory>
</hibernate-configuration>

安装好NHibernate之后,把E:\informix\packages\NHibernate.4.0.0.4000\ConfigurationTemplates下的Oracle.cfg.xml模板拷出来,然后放到你的Bin文件夹下,配置文件内容,如上,

特别需要注意的是属性:

<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
属性dialect的值NHibernate.Dialect.Oracle10gDialect可以连接 oracle 10g,也可以连接oracle 11g的数据库,这点跟java的Hibernate是一样的
更多的属性配置见链接 http://www.cnblogs.com/siyunianhua/p/6794016.html

三、 Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio(简称ODTwithODAC)安装与visual  studio 2017通过客户端连接数据库

ODAC简介

ODAC 直接使用 Oracle 调用接口 (OCI). OCI 是一种允许应用程序开发人员使用第三方开发语言存取Oracle数据服务器的过程或函数以及控制所有的SQL语句执行状态的应用程序接口(API)。OCI 通过一个动态运行库(ORA*.DLL)提供了一个标准的数据库存取库及函数,以在应用程序中建立连接。也可以使用ODAC的Net选项而无需在客户机上安装Oracle客户端来连接到Oracle.在这种情况下,ODAC仅需要TCP/IP协议的支持,从而可以创建真正的、最小的数据库应用程序。

我使用的是32位的ODAC,如下

ODAC 11.2 第 2 版和 Oracle Developer Tools for Visual Studio (11.2.0.1.2)

visual studio 2017使用NHibernate4.0连接oracle11g数据库 下载文件
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 ODTwithODAC112012.zip 276 MB(289670995 字节)
    ODAC 安装说明
     
   

下载包括

  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Developer Tools for Visual Studio 11.2.0.1.2
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Data Provider for .NET 4 11.2.0.1.2
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Data Provider for .NET 2.0 11.2.0.1.2
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Providers for ASP.NET 4 11.2.0.1.2
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Providers for ASP.NET 2.0 11.2.0.1.2
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Database Extensions for .NET 4 11.2.0.1.2 — 仅用于升级
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Database Extensions for .NET 2.0 11.2.0.1.2 — 仅用于升级
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Provider for OLE DB 11.2.0.1.0
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Objects for OLE 11.2.0.1.0
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Services for Microsoft Transaction Server 11.2.0.1.0
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle ODBC Driver 11.2.0.1.0
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle SQL*Plus 11.2.0.1.0
  visual studio 2017使用NHibernate4.0连接oracle11g数据库 Oracle Instant Client 11.2.0.1.0

  到oracle 官网下载一个oracle 11g对应64位的ODAC安装包,安装好之后,要让这个客户端能连接上数据库
把 客户端下的 product\11.2.0\client_1\Network\Admin\Sample下的两个文件 sqlnet.ora 和 tnsnames.ora,复制到它的上一层文件夹下,如图,

visual studio 2017使用NHibernate4.0连接oracle11g数据库

<一>

visual studio 2017使用NHibernate4.0连接oracle11g数据库

用记事本打开Admin下的 tnsnames.ora文件,修改端口为1521,修改实例名,和localhost,如图

visual studio 2017使用NHibernate4.0连接oracle11g数据库

修改了完之后,重启计算机。
使用visual studio 2017 通过oracle客户端连接数据库
打开工具/连接数据库

visual studio 2017使用NHibernate4.0连接oracle11g数据库

选择oracle数据库,然后确定

visual studio 2017使用NHibernate4.0连接oracle11g数据库

弹出下面那个文本框,输入你的数据库连接信息之后,点击测试链接,提示成功之后,就可以了

visual studio 2017使用NHibernate4.0连接oracle11g数据库

一切准备就绪之后,你需要在NHibernate的配置处理类中添加Oracle.DataAccess引用,然后一切都大功告成了!

资料:

http://www.cnblogs.com/lhking/p/3930711.html

http://blog.csdn.net/fjfdszj/article/details/6637998

https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/Driver/OracleManagedDataClientDriver.cs


如果有任何疑问,可以联系我的qq:364131167