惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
博客园_首页
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
V
Visual Studio Blog
小众软件
小众软件
MyScale Blog
MyScale Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
T
Tor Project blog
Jina AI
Jina AI
GbyAI
GbyAI
C
Comments on: Blog
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
A
Arctic Wolf
有赞技术团队
有赞技术团队
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
Security Latest
Security Latest
Webroot Blog
Webroot Blog
C
Cisco Blogs
雷峰网
雷峰网
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
H
Hacker News: Front Page
D
Darknet – Hacking Tools, Hacker News & Cyber Security
D
Docker
P
Palo Alto Networks Blog
The Register - Security
The Register - Security
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志

博客园 - 3echo

物联网笔记四:物联网网络及协议 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网学习笔记二:物联网网关 物联网学习笔记一:物联网入门的必备 7 大概念和技能 使用Python 将shapefile导入mongodb ArcGIS支持MongoDB数据源 做事要趁早 产品介绍汇报模板 软件企业利润率知多少 项目管理经验谈之意外事件处理 文件数据库和关系数据库的比较 实时/历史数据库和关系型数据库的区别 ArcGIS中如何实现地图缩编(转载) 浙江省地理空间数据交换和共享管理办法 ORA-06413:连接未打开错误 - 3echo - 博客园 获取两点(经纬度表示)间距离 中国房市之痛 3S新闻周刊很好很专业 NET生成下面的模块时,启用了优化或没有调试信息
如何使用Nhibernate动态连接Oracle数据库
3echo · 2010-06-07 · via 博客园 - 3echo

如何使用Nhibernate动态连接Oracle数据库

/ 3echo 2010-6-7

关于如何使用Nhibernate配置连接其支持的数据源,网上一些相关的文档已经详细作了说明,同时在其2.0帮助文档中也有相关的描述。一般常用的有两种方式:

一、使用配置文件(.config)连接数据库

下面以使用Nhibernate2.2连接Oracle10数据库为例,给出连接配置信息如下:

  <configSections>

    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />

  </configSections>

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

    <session-factory name="NHibernate.Test">

      <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>

      <property name="connection.connection_string">User ID=hzga;Password=hzga;Data Source=orcl;Persist Security Info=True;</property>

      <property name="show_sql">false</property>

      <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>

      <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>

      <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>

    </session-factory>

</hibernate-configuration>

二、通过提供一个IDictionary实例连接数据库

下面还是以使用Nhibernate2.2连接Oracle10数据库为例,给出连接配置信息如下:

            cfg = new Configuration();

            IDictionary<string, string> connProps = new Dictionary<string, string>();

            connProps.Add("connection.driver_class", "NHibernate.Driver.OracleClientDriver");

            connProps.Add("connection.connection_string", "User ID=hzga;Password=hzga;Data Source=orcl;Persist Security Info=True;");

            connProps.Add("query.substitutions", "true 1, false 0, yes 'Y', no 'N'");

            connProps.Add("dialect", "NHibernate.Dialect.Oracle10gDialect");

            connProps.Add("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu");

            cfg.SetProperties(connProps);

            cfg.AddAssembly(AssemblyName);

        sessions = cfg.BuildSessionFactory();

三、如何使用Nhibernate动态直接连接Oracle数据库

上述两种方式都可以成功连接到Oracle数据库,但是前提条件是运行程序时需要安装Oracle客户端。在程序发布部署的时候安装Oracle客户端是一件非常麻烦的事件,那么有没有一种比较好的方法可以直接连接Oracle数据库,同时又不必安装Oracle客户端呢。

答案是肯定的,下面提供两种方式直接连接Oracle数据库:

1、通过OleDBOracle公司的驱动

            cfg = new Configuration();

            IDictionary<string, string> connProps = new Dictionary<string, string>();

            connProps.Add("connection.driver_class", "NHibernate.Driver.OleDbDriver");

            connProps.Add("connection.connection_string", "Provider=OraOLEDB.Oracle.1;User ID=hzga;Password=hzga;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.148)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))");

            connProps.Add("query.substitutions", "true 1, false 0, yes 'Y', no 'N'");

            connProps.Add("dialect", "NHibernate.Dialect.Oracle10gDialect");

            connProps.Add("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu");

            cfg.SetProperties(connProps);

            cfg.AddAssembly(AssemblyName);

             sessions = cfg.BuildSessionFactory();

2、通过OLEDB和微软公司的Oracle驱动

            cfg = new Configuration();

            IDictionary<string, string> connProps = new Dictionary<string, string>();

            connProps.Add("connection.driver_class", "NHibernate.Driver.OleDbDriver");

            connProps.Add("connection.connection_string", " Provider=MSDAORA.1;User ID=lportal;Password=lportal;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = zhbrserver)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))");

            connProps.Add("query.substitutions", "true 1, false 0, yes 'Y', no 'N'");

            connProps.Add("dialect", "NHibernate.Dialect.Oracle10gDialect");

            connProps.Add("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu");

            cfg.SetProperties(connProps);

            cfg.AddAssembly(AssemblyName);

            sessions = cfg.BuildSessionFactory();