example connecting conexiones c# oracle visual-studio nhibernate managed

connecting - pool de conexiones c#



C#NHibernate y Oracle Managed Client (1)

Estoy usando NHibernate 4.0.4 y he instalado el paquete nuget "Oracle.ManagedDataAccess" ( https://www.nuget.org/packages/Oracle.ManagedDataAccess/ ).

Para configurar NHibernate para usar el Controlador Oracle administrado, es necesario cambiar solo un poco el archivo hibernate.cfg.xml y usar NHibernate.Driver.OracleManagedDataClientDriver como "connection.driver_class".

Por lo tanto, mi archivo de configuración xml es el siguiente:

<?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>

Buena suerte. Sé que usar Oracle y ORM puede ser una experiencia bastante molesta, pero que al final vale la pena.

Tengo un gran proyecto que oculta otros 16 proyectos (Pruebas, Webs y aplicaciones como Core, Email, etc.). Uso C # MVC4 para mi proyecto principal de sitio web. Si utilizo un cliente no administrado necesito que haga una carpeta de proyecto / biblioteca registrada Oracle.DataAccess.dll y todo funciona bien (debo configurar (cambiar) en Web.config -> param:

<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>

Y la conexión de DB funciona bien sin la excepción ORA TNS_NAME). Debo establecer Origen de datos en la ruta completa con tnsnames.ora cuando uso solo alias como TEST recibo un mensaje "Excepción: ORA-12154: TNS: no se pudo resolver el identificador de conexión especificado", pero si configuro el código de tns completo para alias -> todo funciona muy bien.

Yo uso el archivo 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>

Mi archivo Web.config (para el cliente administrado agrega la parte 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>

He dedicado el servidor de bases de datos y la programación en Visual Studio 2010 SP1 de 32 bits (Win 7 64b). He instalado el cliente Oracle 11g (versión 32 y 64b). El archivo hibernate.cfg.xml se usa en otros 3 proyectos en paquetes como "IntegrationTest", "Core", etc. Ejecuto el programa (F5) con el modo Debug y la plataforma x86.

En el proyecto que uso:

  • NHibernate v. 3.3.1.4000
  • StructureMap v. 2.6.4.
  • y otros paquetes sin importancia

¿Qué tengo que instalar el paquete y cómo configurarlo? Intento agregar referencia con Nuget

  • Oficial Oracle ODP.NET, controlador administrado 12.1.22
  • Oracle Data Provider para .NET (ODP ... 121.1.2

Cuando instalo algunos de estos paquetes (agrego referencias de Nuget) a mi proyecto de sitio web y cambio hibernate.cfg.xml a:

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

Recibí un mensaje de VS Exception "No se pudo crear el controlador de NHibernate.Driver.OracleManagedDriver"

Si voy a la Vista -> Explorador de Servidores -> al Cennection de Datos y configuro una Conexión de Agregar. . . (ver enlace -> Un manual de Easy Drive to .NET). No recibo una opción administrada ODP.NET, solo la opción del proveedor de datos .NET Framework para Oracle, y cuando intento la conexión recibo este mensaje "BadImageFormatException. Esto ocurrirá cuando se ejecuta en modo de 64 bits con los componentes de cliente Oracle de 32 bits instalados"

Mi pregunta es

  1. ¿Qué puedo usar como referencia (controlador)?
  2. ¿Cómo puedo configurarlo?

Una unidad fácil de .NET Manual

Muchas gracias