C# NHibernate 和 Oracle 托管客户端
C# NHibernate & Oracle Managed Client
我有一个大项目隐藏了另外 16 个项目(测试、网络和应用程序,如核心、电子邮件等。)。我将 C# MVC4 用于我的主要网站项目。如果我使用非托管客户端需要我做一个项目文件夹 /bin 记录库 Oracle.DataAccess.dll 并且一切正常(我必须在 Web.config 中设置(更改) -> 参数:
<connectionStrings>
<add name="PC13" connectionString="User Id=TEST; Password=TEST; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBTEST)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = DBTEST)));" />
</connectionStrings>
数据库连接工作正常,没有 ORA 异常 TNS_NAME)。当我只使用像 TEST 这样的别名时,我必须使用 tnsnames.ora 将数据源设置为完整路径,我收到一条消息 "Exception: ORA-12154: TNS:could not resolve the connect identifier specified",但是如果我为别名设置完整的 tns 代码 -> 一切正常。
我使用hibernate.cfg.xml文件:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="command_timeout">60</property>
<property name="cache.provider_class">NHibernate.Caches.SysCache2.SysCacheProvider, NHibernate.Caches.SysCache2</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">true</property>
<property name="cache.default_expiration">120</property>
</session-factory>
我的 Web.config 文件(对于托管客户端添加 oracle.manageddataaccess.client 部分):
<connectionStrings>
<add name="PC13" connectionString="User Id=TEST; Password=TEST; Data Source=DBTEST;" />
</connectionStrings>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="DBTEST" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBTEST)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = DBTEST)))"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
我有专用的数据库服务器,我在 Visual Studio 2010 SP1 32 位 (Win 7 64b) 上编程。我已经安装了 Oracle 客户端 11g(32 和 64b 版本)。文件 hibernate.cfg.xml 用于包中的另外 3 个项目,如 "IntegrationTest"、"Core" 等:。我 运行 使用调试模式和 x86 平台编程 (F5)。
在项目中我使用:
- NHibernate 版本 3.3.1.4000
- StructureMap 版本 2.6.4.
- 和其他不重要的包
我需要安装什么包以及如何设置它?
我尝试使用 Nuget
添加引用
- 官方 Oracle ODP.NET,托管驱动程序 12.1.22
- 用于 .NET 的 Oracle 数据提供程序(ODP...121.1.2
当我将其中一些包(从 Nuget 添加引用)安装到我的网站项目时,我将 hibernate.cfg.xml 更改为:
<property name="connection.driver_class">NHibernate.Driver.OracleManagedDriver</property>
我收到来自 VS 异常的消息 "Could not create the driver from NHibernate.Driver.OracleManagedDriver"
如果我转到 View -> Server Exploler -> Data Cennection 并设置 添加连接。 . .(参见 link -> .NET 入门手册)。我没有获得 ODP.NET 托管选项,只有 .NET Framework 数据提供程序用于 Oracle 选项,当我尝试连接时我收到此消息 "BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed"
我的问题是
- 我可以参考什么(驱动程序)?
- 如何设置?
非常感谢
我正在使用 NHibernate 4.0.4 并且我已经安装了 "Oracle.ManagedDataAccess" nuget 包 (https://www.nuget.org/packages/Oracle.ManagedDataAccess/)。
为了将 NHibernate 配置为使用 Oracle Managed Driver,有必要稍微更改 hibernate.cfg.xml 文件 - 并将 NHibernate.Driver.OracleManagedDataClientDriver 用作 "connection.driver_class"。
因此,我的xml配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.OracleManagedDataClientDriver</property>
<property name="connection.connection_string">User Id=user;Password=pws;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.18)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=SRV)))</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
</session-factory>
</hibernate-configuration>
祝你好运 - 我知道使用 Oracle 和 ORM 可能是一种非常烦人的体验,但最终值得付出努力。
我有一个大项目隐藏了另外 16 个项目(测试、网络和应用程序,如核心、电子邮件等。)。我将 C# MVC4 用于我的主要网站项目。如果我使用非托管客户端需要我做一个项目文件夹 /bin 记录库 Oracle.DataAccess.dll 并且一切正常(我必须在 Web.config 中设置(更改) -> 参数:
<connectionStrings>
<add name="PC13" connectionString="User Id=TEST; Password=TEST; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBTEST)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = DBTEST)));" />
</connectionStrings>
数据库连接工作正常,没有 ORA 异常 TNS_NAME)。当我只使用像 TEST 这样的别名时,我必须使用 tnsnames.ora 将数据源设置为完整路径,我收到一条消息 "Exception: ORA-12154: TNS:could not resolve the connect identifier specified",但是如果我为别名设置完整的 tns 代码 -> 一切正常。
我使用hibernate.cfg.xml文件:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="command_timeout">60</property>
<property name="cache.provider_class">NHibernate.Caches.SysCache2.SysCacheProvider, NHibernate.Caches.SysCache2</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">true</property>
<property name="cache.default_expiration">120</property>
</session-factory>
我的 Web.config 文件(对于托管客户端添加 oracle.manageddataaccess.client 部分):
<connectionStrings>
<add name="PC13" connectionString="User Id=TEST; Password=TEST; Data Source=DBTEST;" />
</connectionStrings>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="DBTEST" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBTEST)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = DBTEST)))"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
我有专用的数据库服务器,我在 Visual Studio 2010 SP1 32 位 (Win 7 64b) 上编程。我已经安装了 Oracle 客户端 11g(32 和 64b 版本)。文件 hibernate.cfg.xml 用于包中的另外 3 个项目,如 "IntegrationTest"、"Core" 等:。我 运行 使用调试模式和 x86 平台编程 (F5)。
在项目中我使用:
- NHibernate 版本 3.3.1.4000
- StructureMap 版本 2.6.4.
- 和其他不重要的包
我需要安装什么包以及如何设置它? 我尝试使用 Nuget
添加引用- 官方 Oracle ODP.NET,托管驱动程序 12.1.22
- 用于 .NET 的 Oracle 数据提供程序(ODP...121.1.2
当我将其中一些包(从 Nuget 添加引用)安装到我的网站项目时,我将 hibernate.cfg.xml 更改为:
<property name="connection.driver_class">NHibernate.Driver.OracleManagedDriver</property>
我收到来自 VS 异常的消息 "Could not create the driver from NHibernate.Driver.OracleManagedDriver"
如果我转到 View -> Server Exploler -> Data Cennection 并设置 添加连接。 . .(参见 link -> .NET 入门手册)。我没有获得 ODP.NET 托管选项,只有 .NET Framework 数据提供程序用于 Oracle 选项,当我尝试连接时我收到此消息 "BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed"
我的问题是
- 我可以参考什么(驱动程序)?
- 如何设置?
非常感谢
我正在使用 NHibernate 4.0.4 并且我已经安装了 "Oracle.ManagedDataAccess" nuget 包 (https://www.nuget.org/packages/Oracle.ManagedDataAccess/)。
为了将 NHibernate 配置为使用 Oracle Managed Driver,有必要稍微更改 hibernate.cfg.xml 文件 - 并将 NHibernate.Driver.OracleManagedDataClientDriver 用作 "connection.driver_class"。
因此,我的xml配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.OracleManagedDataClientDriver</property>
<property name="connection.connection_string">User Id=user;Password=pws;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.18)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=SRV)))</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
</session-factory>
</hibernate-configuration>
祝你好运 - 我知道使用 Oracle 和 ORM 可能是一种非常烦人的体验,但最终值得付出努力。